gpt4 book ai didi

php - 通过结果中的引用对 MYSQL 结果进行排序

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

我有一个返回数组的 SQL 查询,如下所示:

nr|id    |reference
#1|"1311"|"0"
#2|"1731"|"1260"
#3|"1332"|"1261"
#4|"1312"|"1311"
#5|"1316"|"1312"
#6|"1261"|"1316"
#7|"1260"|"1332"

现在的问题是第二列和第三列代表项目的顺序,所以上面数组的正确顺序是

1 - 4 - 5 - 6 - 3 - 7 - 2

因为第三列告诉了当前项目后面的 id 是什么。

有什么方法可以将其放入 SQL 查询中吗?之后使用 PHP 对数组进行排序的解决方案也是可以接受的。

最佳答案

请注意,MySQL 不支持递归,因此您必须以某种方式发明它,或者(更好)重新安排您的问题,以便它不需要它。不管怎样,只是为了好玩,这里有一个解决方案......(注意:我使用 NULL 来表示孤儿)

SELECT *, FIND_IN_SET(nr,(
SELECT CONCAT_WS(',',a.nr,b.nr,c.nr,d.nr,e.nr,f.nr,g.nr)
FROM my_table a
LEFT
JOIN my_table b
ON b.reference = a.id
LEFT
JOIN my_table c
ON c.reference = b.id
LEFT
JOIN my_table d
ON d.reference = c.id
LEFT
JOIN my_table e
ON e.reference = d.id
LEFT
JOIN my_table f
ON f.reference = e.id
LEFT
JOIN my_table g
ON g.reference = f.id
LEFT
JOIN my_table h
ON h.reference = g.id
WHERE a.reference IS NULL
)) a FROM my_table ORDER BY a;

http://www.sqlfiddle.com/#!2/347578/1

关于php - 通过结果中的引用对 MYSQL 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27361816/

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