我使用mysql查询在Database中选择我的重复条目。
select id,DATE_FORMAT(cu_date,'%Y-%m-%d %T'),trunk_id ,count(*) from circuit_u
WHERE DATE_FORMAT(cu_date,'%Y-%m-%d') = '2013-01-26'
group by DATE_FORMAT(cu_date,'%Y-%m-%d %T'),trunk_id
HAVING count(*) > 1;
输出:
16347 2013-01-26 01:00:00 0 2
16372 2013-01-26 01:00:00 1 2
16397 2013-01-26 01:00:00 100 2
16422 2013-01-26 01:00:00 101 2
16447 2013-01-26 01:00:00 121 2
16472 2013-01-26 01:00:00 211 2
16497 2013-01-26 01:00:00 221 2
16522 2013-01-26 01:00:00 311 2
现在我想添加另一个命令来删除它们。
我尝试过很多次,但每次都失败了。
请帮忙。
答案 0 :(得分:2)
你可以试试这个
DELETE from circuit_u WHERE id IN ( select * from (
select id from circuit_u
WHERE DATE_FORMAT(cu_date,'%Y-%m-%d') = '2013-01-26'
group by DATE_FORMAT(cu_date,'%Y-%m-%d %T'),trunk_id
HAVING count(*) > 1 ) t
)
答案 1 :(得分:0)
您不能在同一个SQL查询中访问和删除同一个表中的行,无论您如何尝试,相信我。您至少需要两个查询。
我之前用三个做过:“一个查询为ID创建一个临时内存表;另一个用你要删除的行ID填充它(或保持..);最后一个查询相关原始表和临时表从第一个表中删除行。“
(注意:如果使用临时表,则必须在同一连接中执行三个查询。)