我有一个包含父项和子项的数据库表。前任。
+---+-------+-------+---------+
|id |title |parent | added |
+---+-------+-------+---------+
|1 |title1 |0 |09:50 |
|2 |title2 |0 |09:55 |
|3 |title3 |0 |10:00 |
|4 |title4 |3 |10:05 |
|5 |title5 |1 |10:10 |
|6 |title6 |2 |10:15 |
+---+-------+-------+---------+
我只需要选择 parent = 0
但按照表中添加的最新子项的顺序。 SELECT * FROM table WHERE parent=0 ORDER BY added DESC
这只给我以下输出
+---+-------+-------+---------+
|id |title |parent | added |
+---+-------+-------+---------+
|3 |title3 |0 |10:00 |
|2 |title2 |0 |09:55 |
|1 |title1 |0 |09:50 |
+---+-------+-------+---------+
但是由于添加到父订单中的id 4、5、6是2、1、3,所以我的期望值是
+---+-------+-------+---------+
|id |title |parent | added |
+---+-------+-------+---------+
|2 |title2 |0 |09:55 |
|1 |title1 |0 |09:50 |
|3 |title3 |0 |10:00 |
+---+-------+-------+---------+
写这个剧本最好的方法是什么?
仅供参考。对不起,我的英语不好。如果有人能把这个写得更好,欢迎你。谢谢
2条答案
按热度按时间yacmzcpb1#
试着用下面的方法
yqkkidmi2#
如果一个父母只能有一个孩子,你可以用一个简单的
LEFT JOIN
然后由孩子来排序结果added
价值:输出
sqlfiddle演示
如果一个家长可能有多个孩子,您需要找到
MAX(added)
对于每个父代的子代,并按此排序:备用演示