我想在我的一个 MySQL Drupal 表中执行清理以删除存储的重复值。这是结构:
NID VID DELTA FIELD_VALUE
100 100 0 foobar
100 100 1 foobar
101 101 0 barbar
101 101 1 barbar
102 102 0 foofoo
我的目标是删除具有较大 DELTA
的行,如果具有相同 NID、VID、FIELD_VALUE
的行存在但具有较小的 DELTA
。
我的第一次尝试是以下查询:
从 mytable a where a.delta=1 and 1=(select count(nid) from mytable b where b.nid=a.nid and b.vid=a.vid and b.delta=0 delete和 b.field_value=a.field_value)
不幸的是,数据库说:(MySQL 5.1.65-cll)
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a where a.delta=1 and 1 = (select count from `field_value` b where' at line 1
这对我不是很有帮助。
更新:
删除的答案告诉我 MySQL 不支持 delete 语句中的别名,但删除别名没有帮助。子查询没问题,单独检查。
最佳答案
这个怎么样?
DELETE a
FROM mytable a
JOIN mytable b ON (a.nid = b.nid
AND a.vid = b.vid
AND a.field_value = b.field_value)
WHERE a.delta > b.delta
(不要忘记备份你的数据)
关于mysql - 如何从我的 MySQL 表中删除相似的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12884692/