在MySQL表中查找重复行
我有一个表,其中我将项目链接到类型,其中每个类型可以有多个类别。对于类型和类别的每个组合,只应链接一个项目。然而,由于我过去的一些错误,一些副本已经通过。我现在试图写一个查询,将给我的副本,但我没有做一个很好的工作,或者我不会在这里张贴明显在MySQL表中查找重复行,mysql,Mysql,我有一个表,其中我将项目链接到类型,其中每个类型可以有多个类别。对于类型和类别的每个组合,只应链接一个项目。然而,由于我过去的一些错误,一些副本已经通过。我现在试图写一个查询,将给我的副本,但我没有做一个很好的工作,或者我不会在这里张贴明显 SELECT item_id, type_id, category FROM itemTypes WHERE category = 'cat1' GROUP BY type_id HAVING COUNT(*) >= 2; 这
SELECT
item_id,
type_id,
category
FROM itemTypes
WHERE category = 'cat1'
GROUP BY type_id
HAVING COUNT(*) >= 2;
这就是我试过的。它确实有效,并为我提供了链接到不同项目的类型标识。但是每个类型的id应该只链接到一个项目。此列表不显示链接的项目。这正是我想知道的
有人能帮我吗
更新
下面是一个数据示例。如您所见,type_id
5和6被多次链接。我希望得到的结果只是这些记录
| id | item_id | type_id | cat |
+-------+-----------+-----------+-----------+
| 1 | 100 | 5 | cat1 |
| 2 | 110 | 5 | cat1 |
| 3 | 115 | 6 | cat1 |
| 4 | 120 | 7 | cat1 |
| 5 | 125 | 5 | cat1 |
| 6 | 130 | 6 | cat1 |
| 7 | 135 | 4 | cat1 |
| 8 | 140 | 8 | cat1 |
您需要将
itemTypes
表加入到当前的查询中,重新表述为子查询:
SELECT t1.*
FROM itemTypes t1
INNER JOIN
(
SELECT item_id
FROM itemTypes
WHERE category = 'cat1'
GROUP BY item_id
HAVING COUNT(*) > 1
) t2
ON t1.item_id = t2.item_id;
当前查询的逻辑问题是,它只能找到符合条件的
item\u id
值,而不能找到其他列值。您需要将itemTypes
表加入到当前的查询中,重新表述为子查询:
SELECT t1.*
FROM itemTypes t1
INNER JOIN
(
SELECT item_id
FROM itemTypes
WHERE category = 'cat1'
GROUP BY item_id
HAVING COUNT(*) > 1
) t2
ON t1.item_id = t2.item_id;
当前查询的逻辑问题是,它只能找到符合条件的
item\u id
值,而不能找到其他列值。更新您的问题并添加适当的数据样本更新您的问题并添加适当的数据样本这正是我要找的。你是个救生员。谢谢。这正是我想要的。你是个救生员。谢谢