返回默认行,如果没有找到行SQL

时间:2017-03-13 15:53:42

标签: sql

我收到了这个问题:

SELECT * FROM [table]
WHERE ID > 18
IF @@ROWCOUNT = 0
SELECT  TOP 1 * FROM [table]

如果上面的查询没有返回任何行,我想返回表的第一行。但是,这会返回两个结果集,无论如何我可以将它组合起来只返回一个结果集吗?

2 个答案:

答案 0 :(得分:1)

也许使用EXISTS,理想情况下使用相关查询,但不知道你的表结构。

SELECT  TOP 1 * FROM [table] WHERE NOT EXISTS (SELECT * FROM [table] WHERE ID > 18)

如果使用TOP 1

,还应添加ORDER BY

答案 1 :(得分:-1)

SELECT * FROM [table]
WHERE ID > 18
UNION 
SELECT  TOP 1 * FROM [table] WHERE NOT EXISTS( SELECT 1 FROM [table] WHERE ID>18) ORDER BY ID