我想从链接表中删除重复的行。此处的select查询确实有效:
SELECT *
from LINKS t1
WHERE EXISTS (
SELECT *
from LINKS t2
where t2.cntid = t1.cntid
and t2.title= t1.title
and t2.lnkid > t1.lnkid
);当我更改相同的查询以删除时:
DELETE from LINKS t1
WHERE EXISTS (
SELECT *
from LINKS t2
where t2.cntid = t1.cntid
and t2.title= t1.title
and t2.lnkid > t1.lnkid
);它不再工作了,并声明: ERROR 1064 (42000):在SQL语法中有一个错误。
这里有什么问题?有人能帮我修复查询吗?
发布于 2013-11-21 11:11:32
您可以使用没有JOIN和内联视图的EXISTS来实现这一点,如下所示:
DELETE t1
FROM LINKS t1, LINKS t2
WHERE t2.cntid = t1.cntid
AND t2.title= t1.title
AND t2.lnkid > t1.lnkid这比使用EXISTS更快。当然,您选择的可以这样转换。
SELECT *
from LINKS t1, LINKS t2
WHERE t2.cntid = t1.cntid
AND t2.title= t1.title
AND t2.lnkid > t1.lnkid如果您尝试删除,请使用set autocommit = '0'
发布于 2013-11-21 11:10:25
尝试:
DELETE t1 from LINKS t1
WHERE EXISTS (SELECT * from (select * from LINKS) t2
where t2.cntid = t1.cntid
and t2.title= t1.title
and t2.lnkid > t1.lnkid);SQLFiddle演示
https://stackoverflow.com/questions/20119211
复制相似问题