【发布时间】:2014-04-03 11:32:13
【问题描述】:
我在 MySQL 中有一个小问题。 这里有两张表:
table1: id, value1, value2
table2: id, table1_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
);
【问题讨论】: