SQL Server if else语句是怎么进行控制的

IF(1 = 1)
BEGIN
select top 1name into #tmpa from users
END
ELSE
BEGIN
select top 1 id into #tmpa from users
end
go
select * from #tmpa
drop table #tmpa

代码如上,结果如图

我想不通SQL 对if else语句是怎么控制的,难道我if成功了,还会去看else的内容吗?

楼主 你这个问题 我研究了半天 终于搞出来了

你上面的语句之所以会报错

表面上看是没有问题的 报错是因为sql的执行机制
首先这个脚本 sql会自动检查语法问题 这第一次检查是没有问题 所以会通过检查

然后就开始判断条件 if条件满足了 所以if里面的语句会执行 这时候就创建了临时表#tmpa
最后 这地方是关键 虽然if已经执行过了 但else这里还要做一次判断 判断条件肯定是不满足 但检查语法 这次就不行了 因为上面已经创建了这个临时表 这个时候再检查语法 那么肯定会报错了
记住else 这里是检查语法 不是执行
想通过的话 我帮你改了下

IF(1 = 1)
BEGIN
select top 1name into #tmpa from users
END
ELSE
BEGIN
execute(' select top 1 id into #tmpa from users')
end
go
select * from #tmpa
drop table #tmpa
如果解决了楼主的疑问 希望采纳
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-04-28

IF ELSE语句它是用来对过程进行控制的。在SQL的世界中CASE语句语句有类似的效果。下面简单的介绍CASE语句的用法。考虑下面的情况,假设有个user表,定义如下:

CREATE TABLE USER   
(   
NAME VARCHAR(20) NOT NULL,---姓名   
SEX INTEGER,---性别(1、男   2、女)   
BIRTHDAY DATE---生日   
);  
CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
SEX INTEGER,---性别(1、男 2、女)
BIRTHDAY DATE---生日
);

第2个回答  2020-11-17
我研究了半天 终于搞出来了 你上面的语句之所以会报错 表面上看是没有问题的 报错是因为sql的执行机制 首先这个脚本 sql会自动检查语法问题 这第一次检查是没有问题 所以会通过检查 然后就开始判断条件 if条件满足了 所以if里面的语句会执行 这时候就创建了临时表#tmpa 最后 这...
SQL Server if else语句是怎么进行控制的_百度知道
百度知道

分享

点赞



反馈
...的博客 - CSDN博客 - sql server if else语句是怎么进行控制的
2012年12月25日 SQL Server 流程控制中的 If...Else 语句。 1,If...Else 语句 1 --=== 2 -- 1, If...Else语句 3 -- Desc:If..Else语句...
CSDN技术社区

SQL Server 存储过程if else细节 - 球敲代码 - 博客园
2018年11月24日查了度娘还以为是什么返回值的问题,但是我把原来1的位置的SQL放到其他下面还是可以出来的啊! 最后我重新排查了下语句,第二个if前面没else,但...
博客园

SQL Server - 流程控制 2,If...Else 语句 - weixin - 342354... - CSDN博客
2017年10月10日ylbtech-SQL Server:SQL Server-流程控制 2,If...Else 语句SQL Server 流程控制中的 If...Else 语句。1,If...Else 语句 1 --===...
第3个回答  2013-09-14
创建临时表确实不能这样写,你可以改成这样

select name into #tmpa from users where 1=2
IF(1 = 1)
BEGIN
insert into #tmpa select top 1name from users
END
ELSE
BEGIN
insert into #tmpa select top 1 id from users
end追问

为什么?求解答啊,因为涉及到的行比较多,不能每次都新建表啊

第4个回答  2015-03-09
先创建临时表,然后插入
DECLARE @NAME VARCHAR(50)
DECLARE @ID VARCHAR(50)
CREATE TABLE #TEMPA
(
UESRNAME varchar(50),
ID varchar(50)
)
--流程
IF(1 = 1)
BEGIN
insert into #TEMPA (USERNAME) VALUES(@NAME)
END
ELSE
BEGIN
insert into #TEMPA (ID) VALUES(@ID)
end
go
select * from #TEMPA
drop table #TEMPA