返回两个select语句之一的SQL查询
我有一个查询,它使用UNION ALL从两个不同的select语句返回结果 我想将其设置为仅返回第一个select结果,如果第一个select为空,则返回第二个select语句的结果 有人能给我一个简单的例子,我可以如何做到这一点 提前谢谢返回两个select语句之一的SQL查询,sql,select,union,Sql,Select,Union,我有一个查询,它使用UNION ALL从两个不同的select语句返回结果 我想将其设置为仅返回第一个select结果,如果第一个select为空,则返回第二个select语句的结果 有人能给我一个简单的例子,我可以如何做到这一点 提前谢谢 Brian这将检查第一次查询返回的记录,然后执行它。否则将执行第二个查询。 DECLARE @FirstCount int SET @FirstCount = (SELECT COUNT (*) FROM <First query>) IF
Brian这将检查第一次查询返回的记录,然后执行它。否则将执行第二个查询。
DECLARE @FirstCount int
SET @FirstCount = (SELECT COUNT (*) FROM <First query>)
IF @FirstCount > 0
BEGIN
<first query here>
END
ELSE
BEGIN
<Second query here>
END
DECLARE@FirstCount int
设置@FirstCount=(从中选择计数(*)
如果@FirstCount>0
开始
结束
其他的
开始
结束
您也可以使用如下表变量:
DECLARE @FirstQuery TABLE
(
<fields>
)
SET @FirstQuery = <First Query>
IF EXISTS (SELECT * FROM @FirstQuery)
BEGIN
SELECT * FROM @FirstQuery
END
ELSE
BEGIN
<Second query here>
END
DECLARE@FirstQuery表
(
)
SET@FirstQuery=
如果存在(从@FirstQuery中选择*
开始
从@FirstQuery中选择*
结束
其他的
开始
结束
假设您想要的是查询而不是批处理,您可以在第二个查询中复制联合的第一个查询,以确定它是否产生结果,并使第二个查询以此为条件。
例如,只有在没有订单的情况下才显示发货,否则显示两者(没有商业意义,但显示要点):
在不知道您的数据的情况下,我不能说是否有比WHERE子句更有效的方法。您是说SELECT是空的,因为它返回空字符串还是根本不返回任何记录?
select id from tb_shipment
union all
select id from tb_order where 0 = (select COUNT(*) from tb_shipment)