【发布时间】:2021-06-01 20:49:48
【问题描述】:
以下查询返回一些行:
SELECT COUNT(*) AS Dup, virtual_switch_id, slot_number, port_number
FROM switch_port
GROUP BY virtual_switch_id, slot_number, port_number
HAVING COUNT(*) > 1
dup virtual_switch_id slot_number port_number
2 47 0 5
2 46 0 5
2 26 1 22
2 46 0 2
这正是我最初想要的,但我需要了解更多信息。 是否可以有其他值(不属于重复项)?
每个重复行(测试了 3 个字段)在 switch_port 表(和其他有趣的字段)中都有一个唯一的 id(主键),每个 virtual_switch_id 在另一个表中都有一个名称,称为 switch_conf。
所以我想要一些这样的结果(仅在我的前三个字段重复的地方):
virtual_switch_id slot_number port_number id value1 switch_conf.name
47 0 5 0 val1 sw1
47 0 5 1 val2 sw1
26 1 22 2 val1 sw2
26 1 22 8 val4 sw2
26 1 22 12 val1 sw2
为了选择我必须删除的重复条目。
尝试了一些“加入”但没有结果(笛卡尔积代替......)。我认为 GROUP BY 不是正确的解决方案...
感谢任何线索/答案。
【问题讨论】:
-
我理解正确吗:你只是想删除你的重复记录?
-
我只想保留一个记录,手动删除重复,有一些值的时候发现...
-
请添加一些示例数据到您的问题,并更详细地解释您的预期输出。在那种情况下,我不明白你想要检索
-
我想要像最初问题中提供的第二个输出一样。有了这个输出,我可以选择我必须删除的“id”(例如:重复行 47,0,5 的“1”,因为“value1”字段的值对我来说不正确)。
-
我只想在具有前 3 个字段的相同值的重复行时输出。否则,我有成千上万的结果(与人脑不兼容!)
标签: postgresql duplicates