如果没有从表返回的行,我需要获取虚拟值。 If exists本身可以工作,但会给Union带来错误。有人可以指导我解决方案或解决方法吗?
create table test1 (col1 varchar(10))
create table test2 (col1 varchar(10))
create table test3 (col1 varchar(10))
insert test1 values ('test1-row1')
insert test1 values ('test1-row2')
insert test2 values ('test2-row1')
insert test2 values ('test2-row2')
select col1 from test1
union
select col1 from test2
union
if exists (select * from test3)
select col1 from test3
else
select 'dummy'
答案 0 :(得分:9)
如果test3为空,您可以添加另一个返回虚拟行的联合:
select col1 from test1
union
select col1 from test2
union
select col1 from test3
union
select 'dummy' where not exists (select * from test3)
答案 1 :(得分:0)
我相信你不能使用if那样的话。 IF语句用于控制控制流,现在是数据选择。将查询更改为
IF exists (select * from test3)
BEGIN
--query all three
END
ELSE
BEGIN
--query just two
END