查询语句1:select * from table where 条件1 结果为空,则执行查询语句2:select * from table where 条件2。用case when的话有问题,它只能返回一个字段,不能返回结果集。
--条件成立
if exists(select 1 from table where 字段=条件)
begin
select * from table1
end
ELSE
begin
select * from table2
end
首先,你这问题标签写了两个数据库,到底是想在哪个数据库里实现这样的功能呢?不同数据库支持的功能不一样,语法也有很多区别。
然后,你说的这个功能,必须要满足两个数据集的字段个数和字段类型完全匹配,才能在select语句中使用。因为数据库里的select语句,必须在一开始就确定好了输出结果有哪些字段及字段类型,不能在进行任何判断及查询后发生变更。
建议你说下原始场景是什么,举个例子看看,可能根本不需要做什么判断就可以实现
查同一个表的话,用or来处理条件就好了
select * from table where (判断条件满足 and 条件1 ) or (判断条件不满足 and 条件2 )
直接在代码中判断不好吗?为啥要放到sql语句中
是的 逻辑判断可以放到代码中, 但是这种也可以写 就使用if标签判断就行
select * from table where 条件1
union all
select * from table where 条件2