【问题标题】:order by foreign key mysql same table按外键mysql同一张表排序
【发布时间】:2018-10-08 08:07:47
【问题描述】:

我有一个表(表顺序),外键索引到同一个表,每个订单都有很多其他订单:

 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  

【问题讨论】:

  • 提供您的预期输出
  • 请显示两个表的示例数据以及您期望的输出。
  • 请检查我更新的问题。谢谢
  • 如果我错了请纠正我但你想要的结果似乎没有任何顺序
  • 我想按状态订购 id_source 为空的主要订单,如果他们有订单,订单会随着孩子的状态而变化

标签: php mysql sql-order-by


【解决方案1】:

如果我对您的理解正确,那么您想在 order by 上使用条件语句,这可以通过以下方式实现:

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; 

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 2020-01-17
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多