我有一张表格,上面跟着字段
id, name, sub_id
1, test1, ""
2, test2, ""
3, test3, ""
4, test4, ""
5, test5, 1
6, test6, 1
7, test7, 2
8, test8, 3
我想从这个表中检索数据,这个数据的排序方式是按id排序,然后是sub_id(如果存在的话)。 例如:
id, name, sub_id
1, test1, ""
5, test5, 1
6, test6, 1
2, test2, ""
7, test7, 2
3, test3, ""
8, test8, 3
4, test4, ""
我尝试过按顺序排序,但是没有用。
答案 0 :(得分:0)
我花了一段时间才明白,sub_id再次引用同一个表。 在那之后,我意识到你需要自己加入桌子。
尝试此查询
SELECT
a.*
FROM
`some_table` AS a
LEFT JOIN `some_table` AS b
ON
b.id = a.sub_id
ORDER BY
IF (b.id IS NULL, 0, a.sub_id) ASC,
a.id ASC
答案 1 :(得分:0)
您的示例不显示按id然后sub_id排序,但如果您愿意,则会更容易:
SELECT * FROM some_table ORDER BY id,ifnull(sub_id,0);
我假设“”是一个空值,否则你需要一个与ifnull不同的函数。