gpt4 book ai didi

MySql 对多列进行排序考虑多个

转载 作者:行者123 更新时间:2023-11-29 11:29:55 24 4
gpt4 key购买 nike

  id  | p_id   
--------------------------
1 | 0
2 | 0
3 | 1
4 | 2
5 | 0
6 | 7
7 | 1
8 | 0

如果我给出的话,这是上面的表格数据

SELECT * from tablename order by `id` asc

它会带来上面的结果集

但我的用例是我需要以不同的方式按 id 和 p_id 进行排序(即,我需要按如下方式获取结果集

          id  | p_id   
--------------------------
1 | 0
3 | 1
7 | 1
6 | 7
2 | 0
4 | 2
5 | 0
8 | 0

让我简单解释一下,p_id1 应该是 id 1 的旁边,并且像上面这样排列,它清楚地表明 p_id 1p_id 2 位于 旁边id 12 分别,并确保 id 7 按顺序和 id 6 位于 id 7

旁边

最佳答案

如果我理解正确,您希望的顺序是 -> 如果 P_id=0 则按 ID 排序,否则按 p_id 排序。

您可以使用CASE EXPRESSION通过条件排序来实现此目的:

SELECT * 
FROM YourTable t
ORDER BY CASE WHEN t.pid = 0
THEN t.id
ELSE t.p_id
END ASC,
t.id

这应该会返回您预期的结果。

关于MySql 对多列进行排序考虑多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37584972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com