我有一个表,在该表中,我将项链接到每个类型都可以有多个类别的类型。对于类型和类别的每个组合,只应该链接一个项。然而,经过我过去的一些错误,一些副本已经溜走了。我现在正在尝试写一个查询,这将给我副本,但我没有做一个很好的工作,否则我不会在这里张贴明显。
SELECT
item_id,
type_id,
category
FROM itemTypes
WHERE category = 'cat1'
GROUP BY type_id
HAVING COUNT(*) >= 2;这就是我试过的。它确实工作,并给我的type_ids是链接到不同的项目。但是每个type_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 |发布于 2018-05-17 13:11:38
您需要将您的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_id值,而不能找到其他列值。
https://stackoverflow.com/questions/50392290
复制相似问题