假设有一些包含一些数据的表格:
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
还有其他(一个)吗?
答案 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
,因此您可能需要使用 limit
或 select top
或其他东西。