我有一个表(表顺序),外键索引到同一张表,每个顺序还有许多其他顺序:
order
----------
id_order
state
id_source
id_source是一个外键,已在同一张表中替换为id_order
我要选择按订单状态及其订单排序的所有行。
我尝试了这段代码,但没有给我我想要的东西。
select * from order o left join order o2 ON(o.id_order = o2.id_source)
order by o.state , o2.state asc ;
例如:
id_order | state | id_source
-----------------------------------
1 | 1 | null
-----------------------------------
2 | 2 | null
-----------------------------------
3 | 3 | null
-----------------------------------
4 | 1 | 3
我想要的结果
id_order | state | id_source
-----------------------------------
1 | 1 | null
-----------------------------------
3 | 3 | null
-----------------------------------
4 | 1 | 3
-----------------------------------
2 | 2 | null
答案 0 :(得分:0)
如果我对您的理解正确,那么您希望对订单使用条件语句,这可以通过以下方式进行:
select *
from order o
left join order o2 ON(o.id_order = o2.id_source)
order by if(id_source is null, o.state, o2.state) asc;