0

我使用 mysql 查询来选择数据库中的重复条目。

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

现在我想添加另一个命令来删除它们。

我尝试了很多方法,但每次都失败了。

请帮忙。

4

2 回答 2

3

你可以试试这个

   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
   )
于 2013-08-04T09:58:37.900 回答
0

无论您如何尝试,都无法在同一个 SQL 查询中访问和删除同一个表中的行,相信我。您至少需要两个查询。

我之前用三个做过这个:“一个为 ID 创建临时内存表的查询;另一个用您要删除(或保留..)的行 ID 填充它的查询;最后一个查询将原始和从第一个表中删除行的临时表。”

(注意:如果您使用临时表,则必须在同一连接中执行三个查询。)

于 2013-08-04T11:38:15.113 回答