SET vs SELECT是SQL极客之间讨论的常见话题,也是最受欢迎的面试问题之一。SET用于为变量赋值,SELECT用于赋值或从变量/ table / view等中选择值。

让我们看看在不同场景中SET和SELECT的用法。

分配标量值

 
1
2
3
4
5
6
7
8
9
10
-- Query 1: Assigning scalar values
Declare
@set INT,
@select INT
 
SET @set=1
SELECT @select=1
 
SELECT @set AS 'Set', @select AS 'Select'
GO

在上面的查询中,SET和SELECT都用于为变量赋值。

将值分配给多个参数

 
1
2
3
4
5
6
7
8
9
10
11
--Query 2: Assigning values to multiple parameters
DECLARE
@s1 INT,
@s2 INT
 
-- 2 SET statements
SET @s1=1
SET @s2=2
 
-- 1 Select statement
SELECT @s1=1, @s2=2

SET语句可以一次为变量赋值。为了将值分配给两个不同的变量,需要两个不同的SET语句。SELECT语句可以在一个go中为多个变量赋值,如上面的查询所示。在这种情况下,SELECT语句的性能优于SET。

从查询中分配值

在下面的快照中,SELECT语句用于为选择查询中的变量赋值。如果select查询返回多个结果集,SELECT语句会将结果集中的最后一个值分配给变量。

  

如果查询返回多个结果集,则SET语句会出错,如下所示。

  

如果查询返回0行,则SELECT语句不会更改变量值。相反,SET语句将变量设置为NULL,如果查询返回0行,则覆盖先前的值。这显示在下面的快照中。

  

最新文章

  1. Mac 下使用homebrew 安装node后全局安装找不到问题
  2. LoadRunner迭代与并发的理解
  3. noi 6049 买书
  4. [转] AOP面向切面编程
  5. View绘制详解(三),扒一扒View的测量过程
  6. juqery合成事件toggle方法
  7. JSONObject和JSONArray的简单使用(json-lib)
  8. Java并发编程--线程池
  9. 把玩Fedora29操作系统
  10. SSH(Spring SpringMVC Hibernate)框架整合
  11. 使用@import导入实现了ImportBeanDefinitionRegistrar接口的类,不能被注册为bean
  12. Dalvik源码阅读笔记(一)
  13. android view知识点 总结
  14. sqlserver row_number函数的用法
  15. libevent2源码分析之三:信号的初始化流程
  16. HBase-修改表结构
  17. JS 的引用赋值与传值赋值
  18. git clone 指定新建本地库位置
  19. [转载]ExtJs4 笔记(1) ExtJs大比拼JQuery:Dom文档操作
  20. Java 集合类的细节

热门文章

  1. [Tensorflow] Object Detection API - retrain mobileNet
  2. [Bayes] prod: M-H: Independence Sampler for Posterior Sampling
  3. SpringBoot(十六)-- 使用外部容器运行springBoot项目
  4. iOS - WKWebView加载不受信任的https (因用到IP地址加端口号去请求数据)
  5. cocos2dx内存管理
  6. css---颜色过渡渐变
  7. linux环境变量配置,转载地址:http://blog.sina.com.cn/rss/1650981242.xml
  8. eclipse下配置Spring环境
  9. npm构建保存 code ELIFECYCLE解决办法
  10. Codeforces 698A - Vacations - [简单DP]