gpt4 book ai didi

MySQL 更新匹配某个值的行之后的所有行的值

转载 作者:行者123 更新时间:2023-11-29 15:43:13 25 4
gpt4 key购买 nike

我有一个表格,其中列出了内容文章的修订信息。该表由自动增量的revision_id 索引。每个修订版都有一个标志,指示该修订版是否已发布,并且每个修订版都有一个时间戳。

我正在添加一个新列 initial_publication,需要将其设置为为每个 content_id 发布的第一个修订版的时间戳。如果之前没有发布任何修订,则该值应保留 NULL

因此,在执行更新查询之前,表格如下所示:

| revision_id | content_id | published | timestamp  | initial_publication |
| ----------- | ---------- | --------- | --------- | ------------------- |
| 1 | 1 | FALSE | 1564621260 | NULL |
| 2 | 1 | FALSE | 1564621923 | NULL |
| 3 | 2 | TRUE | 1564625583 | NULL |
| 4 | 2 | TRUE | 1564627203 | NULL |
| 5 | 1 | TRUE | 1564630803 | NULL |
| 6 | 3 | FALSE | 1564630830 | NULL |
| 7 | 3 | TRUE | 1564631973 | NULL |
| 8 | 3 | FALSE | 1564632333 | NULL |

更新查询后,它应该如下所示:

| revision_id | content_id | published | timestamp  | initial_publication |
| ----------- | ---------- | --------- | --------- | ------------------- |
| 1 | 1 | FALSE | 1564621260 | NULL |
| 2 | 1 | FALSE | 1564621923 | NULL |
| 3 | 2 | TRUE | 1564625583 | 1564625583 |
| 4 | 2 | TRUE | 1564627203 | 1564625583 |
| 5 | 1 | TRUE | 1564630803 | 1564630803 |
| 6 | 3 | FALSE | 1564630830 | NULL |
| 7 | 3 | TRUE | 1564631973 | 1564631973 |
| 8 | 3 | FALSE | 1564632333 | 1564631973 |

我当前正在循环所有内容项并对每个单独的内容项执行查询,但这需要大量时间,因为该表有数十万行。

最佳答案

我明白了:

UPDATE revisions r, (
SELECT revision_id, content_id, timestamp
FROM revisions
WHERE published = TRUE
GROUP BY content_id
ORDER BY revision_id
) s
SET r.initial_publication = s.timestamp
WHERE r.content_id = s.content_id AND r.revision_id >= s.revision_id;

关于MySQL 更新匹配某个值的行之后的所有行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57356946/

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