我想查询两个表中的一个,取决于其中一个表是否有数据。例如,我有两个表,一个名为Prev,另一个名为Init_SS。如果Prev表中有数据,则查询应返回Prev表中的所有数据,否则,如果Prev表为空,则必须返回Init_SS表中的所有数据。
我正在使用SQL Server和SQL Server Mangement Studio,这是我在查询视图中使用的代码:
IF EXISTS (SELECT * FROM Prev) SELECT * FROM Prev ELSE SELECT * FROM Init_SS当我按下execute 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发布于 2014-01-30 16:56:32
如果这两个表具有相似的设计,您可以这样做
SELECT * FROM Prev 
UNION ALL
SELECT * FROM Init_SS where not exists (SELECT 1 FROM Prev)发布于 2014-01-29 19:43:49
你可以这样做
SELECT * FROM Prev          --<-- Select all
IF(@@ROWCOUNT = 0)          --<-- If no rows has been returned
BEGIN 
 SELECT * FROM Init_SS       --<-- Select this 
END这在视图中是不可能的。为此,您可以使用表值函数的存储过程。
一个视图中只能有一个简单的Select语句。
https://stackoverflow.com/questions/21429544
复制相似问题