gpt4 book ai didi

MySQL - 根据条件更新表 1,并根据其他表 2 更新最大值(值)

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

我在 MySQL 中遇到了一个小问题。这里有两个表:

表1:id,值1,值2

表2:id,表1_fk

在 table1 中,有一些重复行,其中 value1 和 value2 相同(但 id 不同)。

我想从 table1 中删除重复行并保留 ID 最高的行。

但首先我需要链接 table2 中的行,该行链接到重复项(具有最低 ID),然后再删除它们。

非常感谢您对我的帮助。

到目前为止:

CREATE OR REPLACE VIEW duplicateTable1 as
SELECT *
FROM table1 t1
WHERE EXISTS (SELECT t2.id
FROM table1 t2
WHERE t1.value1= t2.value1
AND t1.value2= t2.value2
AND t1.id <> t3.id)
order by value1, value2;


CREATE OR REPLACE VIEW duplicatetable2 as
SELECT *
FROM table2 t2
WHERE t2.table_fk in (
SELECT d.id
FROM duplicateTable1 d
);

Update table2 t2
Set t2.subscription_fk = (
SELECT Max(d.id)
FROM duplicateTable1 d
where d.id=t2.subscription_fk
GROUP BY d.value1, d.value2
);

最佳答案

CREATE TEMPORARY TABLE tmp 
SELECT MAX(id) as id, value1, value2
FROM table1 GROUP BY value1, value2;

UPDATE table2
JOIN table1 t1 ON t1.id = table1_fk
JOIN tmp t ON t.value1 = t11.value1 AND t.value2 = t11.value2
SET table2.table1_fk = t.id;

DELETE FROM table1 WHERE id NOT IN (SELECT id FROM tmp);

关于MySQL - 根据条件更新表 1,并根据其他表 2 更新最大值(值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22836308/

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