如何将缺失的 id 的值视为 0 并按它排序?

  • 本文关键字:排序 id mysql sql
  • 更新时间 :
  • 英文 :


当我在sql中使用in关键字时,可能会缺少一些id,但我希望将它们视为存在,其他列为null或0。

例如,假设我有一个包含两列和一些行的表:
[id,value1]
1 1
2 4
3 3
5 5

我可以这样写sql:
select * from table where id in (1,4,5) order by value1 limit 0,2 ;
当执行这个sql时,返回的结果是[(1,1),(5,5)]。
但我想要的是[(4,0),(1,1)],因为我想把缺失的id 4当作它存在于表中。

所以问题是:是否有一些优雅的方法来实现它使用sql而不是选择所有的行,并在内存中排序。

使用left join:

select *
from (select 1 as id union all
select 4 union all
select 5
) i left join
table t
using (id)
order by t.value1
limit 0, 2 ;

请注意,您是按现有表中的一个值排序的,因此这取决于NULL在其他值之前排序的事实。

最新更新