我一直在尝试查询一组行值重复的位置。像这样:
id part_id supplier quantity
1 1 A 20
2 1 B 30
3 2 A 11
4 2 B 30
5 3 A 20
6 3 B 30
我们可以假设每个part_id将始终同时包含A和B作为供应商。
我的问题是我想查询part_id,其中A = 20且B = 30。
结果将是part_id:1和3
如果A和B在2个不同的行中,我该怎么做?这可能吗?
答案 0 :(得分:0)
子选择会:
SELECT id, part_id, supplier, quantity
FROM yourtable
WHERE part_id IN (
SELECT DISTINCT part_id
FROM yourtable
WHERE ((supplier = 'A') and (quantity = 20))
OR ((supplier = 'B') and (quantity = 30))
)
编辑,好的。给出新信息,请尝试以下子选项:
SELECT part_id
FROM yourtable
WHERE ((supplier = 'A') and (quantity = 20))
OR ((supplier = 'B') and (quantity = 30))
GROUP BY part_id
HAVING COUNT(part_id) = 2
查找a / b内容匹配的所有记录,按part_id分组,但只返回a / b部分匹配的part_ids。所以a = 11的情况会被忽略,因为在那种特殊情况下,计数只会是1。