如何查询使得一组行完全使用mysql重复

时间:2013-02-16 05:15:18

标签: mysql

我一直在尝试查询一组行值重复的位置。像这样:

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个不同的行中,我该怎么做?这可能吗?

1 个答案:

答案 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。