如果where子句不返回任何记录,则返回所有值

时间:2020-07-06 14:25:39

标签: sql-server

我有以下查询

SELECT *
FROM table1
WHERE ID = @ID

如果where子句不返回任何记录,我想返回表中的所有记录。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以使用NOT EXISTS()

Select * From table1 Where ID = @ID 
OR NOT EXISTS(SELECT 1 FROM table1 where ID = @ID)

答案 1 :(得分:0)

如果在表中找到@ID ,则无需指定要查看的内容。那应该怎么办?

  1. 返回一行=>使用@sagi的答案
  2. 返回一个空行集=>修改@sagi的答案以从where子句中删除ID = @ID谓词,仅保留not exists谓词。
  3. 什么也不返回=>
if not exists (select 1 from table1 where ID = @ID)
    select * from table1;