gpt4 book ai didi

MySQL 引用同一个表的列更新表的记录

转载 作者:行者123 更新时间:2023-11-29 07:48:18 25 4
gpt4 key购买 nike

我正在使用MySQL 5.6.17

我有一个自引用TableA,其中包含列id (PK)title (varchar)type (varchar)parent_id(引用同一个表的id的外键)

样本数据如下:

id    title    type    parent_id
1 abc G NULL
2 def G NULL
3 xyz G NULL
4 pqr G NULL
5 abc T NULL
6 def T NULL
7 xyz T NULL
8 pqr T NULL

现在,我希望每条具有 type='G' 的记录都应成为具有 type='T' 具有相同标题的记录的子记录

所以结果表数据应该是:

id    title    type    parent_id
1 abc G 5
2 def G 6
3 xyz G 7
4 pqr G 8
5 abc T NULL
6 def T NULL
7 xyz T NULL
8 pqr T NULL

我尝试过以下查询:

UPDATE TableA 
SET parent_id = (SELECT id FROM ( SELECT id FROM TableA WHERE TYPE='T' ) d)
WHERE TYPE='G';

但它返回

Error Code: 1242
Subquery returns more than 1 row

我也尝试过:

UPDATE TableA t1
SET t1.parent_id = t2.newlocalid
INNER JOIN (
SELECT title, id AS newlocalid
FROM TableA t2
WHERE TYPE='T'
) t2 ON t1.title = t2.title
WHERE t1.type='G'

但它也会返回语法错误。

谁能帮我实现这个目标吗?

最佳答案

UPDATE TABLEA a 
JOIN TABLEA b ON a.title = b.title and a.type='G'and b.type='T'
SET a.parent_id = b.id

关于MySQL 引用同一个表的列更新表的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27147452/

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