Sql 如何利用if语句的结果
我这里有三张清单。如果要对列表1和3或列表2和3进行条件组合,在使用以下代码时似乎还可以Sql 如何利用if语句的结果,sql,sql-server,tsql,Sql,Sql Server,Tsql,我这里有三张清单。如果要对列表1和3或列表2和3进行条件组合,在使用以下代码时似乎还可以 declare @Condition varchar(10) = NULL if @Condition IS NULL select * from List1 else select * from List2 union select * from List3 但是,如果我想通过将最终结果插入表来存储它们,它将返回If语句的语法错误。有更好的办法吗 declare @Conditio
declare @Condition varchar(10) = NULL
if @Condition IS NULL
select * from List1
else
select * from List2
union
select * from List3
但是,如果我想通过将最终结果插入表来存储它们,它将返回If语句的语法错误。有更好的办法吗
declare @Condition varchar(10) = NULL
declare @CombiList table (Value varchar(10))
insert into @CombiList
if @Condition IS NULL
select * from List1
else
select * from List2
union
select * from List3
您需要为每个条件创建两个单独的
INSERT
语句:
if @Condition IS NULL
insert into @CombiList
select * from List1
else
insert into @CombiList
select * from List2
union
select * from List3
您需要为每个条件创建两个单独的
INSERT
语句:
if @Condition IS NULL
insert into @CombiList
select * from List1
else
insert into @CombiList
select * from List2
union
select * from List3
像这样
INSERT INTO @CombiList
SELECT *
FROM list1
WHERE @Condition IS NULL
UNION
SELECT *
FROM List2
WHERE @Condition IS NOT NULL
UNION
SELECT *
FROM List3
WHERE @Condition IS NOT NULL
像这样
INSERT INTO @CombiList
SELECT *
FROM list1
WHERE @Condition IS NULL
UNION
SELECT *
FROM List2
WHERE @Condition IS NOT NULL
UNION
SELECT *
FROM List3
WHERE @Condition IS NOT NULL
如果您真正的问题涉及更复杂的语句,并且代码可以包装在存储过程中,那么构建和执行动态
T-SQL
语句可以降低代码的复杂性
例如:
DECLARE @DynamicTSQLStatement NVARCHAR(MAX);
...
-- some statements that are executing always
SET @DynamicTSQLStatement = '....'
-- conditions
IF ...
SET @DynamicTSQLStatement = @DynamicTSQLStatement + '.....'
ELSE
...
SET @DynamicTSQLStatement = @DynamicTSQLStatement + '.....'
EXEC sp_executesql @DynamicTSQLStatement
如果您真正的问题涉及更复杂的语句,并且代码可以包装在存储过程中,那么构建和执行动态
T-SQL
语句可以降低代码的复杂性
例如:
DECLARE @DynamicTSQLStatement NVARCHAR(MAX);
...
-- some statements that are executing always
SET @DynamicTSQLStatement = '....'
-- conditions
IF ...
SET @DynamicTSQLStatement = @DynamicTSQLStatement + '.....'
ELSE
...
SET @DynamicTSQLStatement = @DynamicTSQLStatement + '.....'
EXEC sp_executesql @DynamicTSQLStatement
您需要创建两个独立的
INSERT
语句您需要创建两个独立的INSERT
语句