我想根据其中一个表是否有数据来查询两个表中的一个。例如,我有两个表,一个叫做Prev,另一个叫做Init_SS。如果Prev表中有数据,则查询应返回Prev表中的所有数据,否则如果Prev表为空,则必须返回Init_SS表中的所有数据。
我在SQL Server Mangement Studio中使用SQL Server,这是我在查询视图中使用的代码:
IF EXISTS (SELECT * FROM Prev) SELECT * FROM Prev ELSE SELECT * FROM Init_SS
当我按下执行sql按钮时,它完全符合我的要求,根据Prev是否为空来返回其中一个表。但是当我尝试保存查询视图时,我收到以下错误消息:
Incorrect syntax near the keyword 'IF'
所以我似乎无法在查询视图中使用'IF'。如何创建查询视图让它按照我的描述进行操作?
我也试过这个:
SELECT *
FROM (IF EXISTS (SELECT * FROM Prev) SELECT * FROM Prev ELSE SELECT * FROM Init_SS) as tb
答案 0 :(得分:1)
如果两个表的设计相似,则可以
SELECT * FROM Prev
UNION ALL
SELECT * FROM Init_SS where not exists (SELECT 1 FROM Prev)
答案 1 :(得分:0)
你可以做这样的事情
SELECT * FROM Prev --<-- Select all
IF(@@ROWCOUNT = 0) --<-- If no rows has been returned
BEGIN
SELECT * FROM Init_SS --<-- Select this
END
除了视图之外,这是不可能的。您可以使用表值函数的存储过程。
视图中只能有一个简单的Select语句。