gpt4 book ai didi

mysql - 使用自定义逻辑删除重复行

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:43 27 4
gpt4 key购买 nike

我一直在寻找一种方法,使用一些自定义逻辑来删除 MySQL 数据库中的一些重复行。

实际数据:

id  name    population
1 CityA 1000
2 CityA 50
3 CityA 0
4 CityB 0
5 CityB 0
6 CityC 10

期望的结果:

id  name    population
1 CityA 1000
4 CityB 0
6 CityC 10

我试过这个查询但没有成功(如果所有人口都等于 0,它会删除一个城市的所有行,就像在 CityB 示例中一样):

DELETE t 
FROM table AS t, table AS t2
WHERE t.id != t2.id
AND t.population <= t2.population

有没有 super 英雄可以解决这个 super 问题?

[编辑] 工作解决方案:http://sqlfiddle.com/#!9/ea3e3/2

最佳答案

您可以使用子查询进行连接,返回每个城市人口最多的行的 ID。

DELETE t1
FROM YourTable AS t1
JOIN (SELECT name, MAX(id) AS maxid
FROM YourTable AS t2
JOIN (SELECT name, MAX(population) AS maxpop
FROM YourTable
GROUP BY name) AS t3
ON t2.name = t3.name AND t2.population = t3.maxpop
GROUP BY t2.name) AS t4
ON t1.name = t4.name AND t1.id != t4.maxid

我需要一个额外的子查询嵌套级别,因为您有多个行具有相同的名称。因此,它首先需要获取每个名称的最大人口数,然后使用 MAX(id) 在该组中选择一个特定的 ID。

关于mysql - 使用自定义逻辑删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44316442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com