按代码选择,如果没有结果选择任何其他

时间:2021-05-25 15:52:48

标签: sql sql-server

假设有一些包含一些数据的表格:

id | code | name
----------------
1  | 0001 | qwer
2  | 0002 | rtyu
3  | 0003 | asdf

只能有一个带有 code == 0002 的记录。它也可能不存在。

如何使用 code == 0002 选择记录,如果没有这样的记录,则使用单个查询选择任何其他记录?

例如对于上面的数据示例,查询返回带有 id == 2 的记录。对于下面的示例:

id | code | name
----------------
1  | 0001 | qwer
2  | 0004 | rtyu
3  | 0003 | asdf

还有其他(一个)吗?

1 个答案:

答案 0 :(得分:1)

一种方法使用 order by 并将结果限制为一行:

select t.*
from t
order by (case when code = '002' then 1 else 2 end)
fetch first 1 row only;

这使用标准 SQL。并非所有数据库都支持 fetch first,因此您可能需要使用 limitselect top 或其他东西。