我收到了这个问题:
SELECT * FROM [table]
WHERE ID > 18
IF @@ROWCOUNT = 0
SELECT TOP 1 * FROM [table]
如果上面的查询没有返回任何行,我想返回表的第一行。但是,这会返回两个结果集,无论如何我可以将它组合起来只返回一个结果集吗?
答案 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