gpt4 book ai didi

mysql - 对表进行排序,在 MySQL 中使用循环与 SELECT 和 UPDATE

转载 作者:行者123 更新时间:2023-11-29 08:59:00 26 4
gpt4 key购买 nike

请帮我对 MySQL 中的表进行排序。我只需要制作一次,而不是在脚本或其他地方动态使用。

这是我的表格“页面”:

|  ...  |  title  |  ...  |  parent_id  |  ...  |  position  |  ...  |

我需要使用以下规则更新表格:选择具有相同 parent_id 的所有行,按 title DESC 对它们进行排序并设置第一行位置 = 0,第二个 = 1 等。并对所有 parent_id 循环此操作。

我进行了一项查询来显示我需要的内容,但没有更新,并且仅针对一个 parent_id。但由于有数千个 parent_id 这个查询需要一个循环。选择后,position 必须更新为与当前行的@number 具有相同的值。

SET @number = -1;
SELECT @number:=@number+1 AS number, p.* FROM `page` AS p WHERE parent_id=1
ORDER BY title DESC;

感谢您的帮助!

最佳答案

SELECT @p:=0, @parent:=0;
UPDATE page p1
JOIN
( SELECT title,
CASE WHEN @parent<>parent_id THEN @p:=0 ELSE @p:=@p+1 END as position,
@parent:=parent_id as parent_id
FROM page
ORDER BY parent_id, title DESC ) p2
ON p1.title = p2.title AND p1.parent_id = p2.parent_id
SET p1.position = p2.position

如果您的 (parent_id,title) 对不是唯一的,请使用您的主键作为连接条件 - 您需要将其添加到括号中进行选择。

关于mysql - 对表进行排序,在 MySQL 中使用循环与 SELECT 和 UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143325/

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