(4.24)sql server变量中set与select的区别
2023-09-11 14:21:09 时间
个人总结:
(1)多个值赋值
SET语句可以一次为变量赋值。为了将值分配给两个不同的变量,需要两个不同的SET语句。
SELECT语句可以在一个go中为多个变量赋值,如上面的查询所示
(2)使用 select 查询作为值
当使用 set @var=(select ....) 如果查询返回多个结果集,则SET语句会出错
如果查询返回0行,则SELECT语句不会更改变量值。相反,SET语句将变量设置为NULL,如果查询返回0行,则覆盖先前的值
SET vs SELECT是SQL极客之间讨论的常见话题,也是最受欢迎的面试问题之一。
SET用于为变量赋值,SELECT用于赋值或从变量/ table / view等中选择值。
让我们看看在不同场景中SET和SELECT的用法。
分配标量值
-- 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都用于为变量赋值。
将值分配给多个参数
--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行,则覆盖先前的值。这显示在下面的快照中。
相关文章
- Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]
- 【Mysql】character-set-server参数
- PHP $_SERVER 及用户真实IP
- 从SQL Server到MySQL,携程核心系统无感迁移实战
- SQL server 导入数据 (excel导入到SQL server数据库)
- SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1
- [SQL] sql server中如何查看执行效率不高的语句
- SQL Server replication requires the actual server name to make a connection to the server.错误解决
- windows server 2008中搭建软路由
- [NPM] Set default values for package.json using npm set
- 从零开始手写Tomcat的教程14节----服务器组件(Server)和服务组件(Service)
- SQL SERVER服务器链接连接(即sql server的跨库连接)
- item "tracker_server" in file:/***/WEB-INF/lib/***.jar!/fdfs_client.conf not found
- SVN server的搭建
- ROS routerOS中修改dhcp 默认dns server IP 域控服务器IP设置为dhcp 默认dns IP
- SQL Server 性能调优
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
- Kettle (PDI) 连接 MS SQL server数据库
- 安装CDH6.3版本的时候遇到 ‘ERROR main:com.cloudera.server.cmf.Main: Server failed’的解决方案