gpt4 book ai didi

mysql - 更新每组的第一条记录

转载 作者:行者123 更新时间:2023-11-30 01:09:51 25 4
gpt4 key购买 nike

有一个包含 5 列的表:iddatacategorytime页面。我想要获取 id > 给定 idcategory = 给定类别 的行,按 将它们分组page,获取按时间排序的每个页面的第一个,并减少该行中的page列。 (时间不是唯一的)

我设法创建了这个查询并且它有效,但我想知道是否有更好的解决方案。我在选择合适的问题标题时也遇到了问题,因此,如果您认为问题标题不正确,请随时纠正我。

UPDATE `content` AS TABLE1
INNER JOIN (SELECT MIN(TABLE2.`id`) AS ID, TABLE2.`page` FROM `content` AS TABLE2
INNER JOIN (
SELECT DISTINCT `page`, MIN(`time`) AS MINTIME
FROM `content`
WHERE (`page` > (SELECT `page` FROM `content` WHERE `id` = ?) AND `category` = ?)
GROUP BY `page`) AS TABLE3
ON TABLE2.`page` = TABLE3.`page` AND TABLE2.`time` = TABLE3.MINTIME
GROUP BY TABLE2.`page`) AS TABLE4
ON TABLE1.`id` = TABLE4.ID
SET TABLE1.`page` = TABLE1.`page` - 1

最佳答案

这个怎么样。您不需要 @ 变量,但我不想在 SQL 中使用问号:

SET @id:= <given id>;

UPDATE
content c1 LEFT JOIN content c2 ON c1.page = c2.page AND
c1.category = c2.category AND
c2.time < c1.time AND c2.id > @id
SET c1.page=c1.page-1
WHERE
c1.id > @id AND
c2.id IS NULL AND
c1.category = '<given category>';

关于mysql - 更新每组的第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525769/

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