Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何删除重复记录并保留最近的记录?_Mysql_Sql - Fatal编程技术网

Mysql 如何删除重复记录并保留最近的记录?

Mysql 如何删除重复记录并保留最近的记录?,mysql,sql,Mysql,Sql,我有一张这样的桌子: Country_city('id', 'country_id', 'City_id') 并在其上复制我选择的记录: SELECT CONCAT(Country_id, '+', City_id), COUNT(CONCAT(Country_id, '+', City_id)) FROM Country_City GROUP BY CONCAT(Country_id, '+', City_id) HAVING COUNT(CONCAT(Country

我有一张这样的桌子:

Country_city('id', 'country_id', 'City_id')
并在其上复制我选择的记录:

SELECT 
    CONCAT(Country_id, '+', City_id), 
    COUNT(CONCAT(Country_id, '+', City_id)) 
FROM Country_City
GROUP BY CONCAT(Country_id, '+', City_id) 
HAVING COUNT(CONCAT(Country_id, '+', City_id)) > 1
结果如下:

CONCAT(Country_id, '+', City_id)  |  COUNT(CONCAT(Country_id, '+', City_id))
MA07+11                           |  48
MA07+13                           |  5
...
我试图删除它们我执行了以下操作:

DELETE FROM Country_City 
WHERE id NOT IN (
           SELECT MAX(id) 
           FROM Country_City 
           GROUP BY CONCAT(Country_id, '+', City_id)
           );

它不起作用;我的要求有什么问题吗?如何删除重复数据并保留一条记录?

请使用您的
CONCAT(国家/地区id,+',城市id)

虽然此处可能不需要
CONCAT
,因此您也可以使用:

DELETE cc FROM Country_City cc
INNER JOIN
(
 SELECT Country_id,City_id,MAX(id) as id 
 FROM Country_City 
 GROUP BY Country_id,City_id
 HAVING COUNT(*) > 1           
) ccs on cc.Country_id = ccs.Country_id 
      and cc.City_id = ccs.City_id 
      and ccs.id != cc.id;

您是否尝试将别名放入
选择MAX(id)作为id
?。
DELETE cc FROM Country_City cc
INNER JOIN
(
 SELECT Country_id,City_id,MAX(id) as id 
 FROM Country_City 
 GROUP BY Country_id,City_id
 HAVING COUNT(*) > 1           
) ccs on cc.Country_id = ccs.Country_id 
      and cc.City_id = ccs.City_id 
      and ccs.id != cc.id;