gpt4 book ai didi

重复条目的 MySQL 更新查询

转载 作者:行者123 更新时间:2023-11-29 06:36:26 25 4
gpt4 key购买 nike

我想要这样的 SQL 更新:

假设我在 MySQL 数据库中有下表

标题

id 标题
1 你好
2 你好
3 嗨
4 一些文字
5 嗨
6 你好

我希望更新此表以便有唯一的标题。

标题

id 标题
1 你好
2 你好1
3 嗨
4 一些文字
5 嗨1
6 你好2

实际上,我正在编写一个迁移脚本,其中最初没有使用唯一标题约束。

最佳答案

update titles t
inner join
(
SELECT id,
title,
case when title=@curTitle then @curRank := @curRank + 1 else @curRank:=0 end,
@curTitle:=title,
@curRank as rank
FROM titles t, (SELECT @curRank := 0,@curTitle="") r
ORDER BY title
) t1 on t1.id = t.id
set t.title = concat(t1.title,case when rank = 0 then "" else rank end)
;

或者,一种可能更有效的方法是采用 Strawberry 的答案并以类似的方式将其转换为 UPDATE 语句....

因此:

update titles t
inner join
(
SELECT x.id
, concat(x.title,CASE WHEN y.id IS NOT NULL THEN COUNT(y.id) ELSE "" END) newTitle
from titles x
LEFT
JOIN titles y
ON y.title = x.title
AND y.id < x.id
GROUP
BY x.id
) t1 on t1.id = t.id
set t.title = t1.newTitle
;

关于重复条目的 MySQL 更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24361767/

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