1

我一直在尝试查询一组行值在哪里准确重复。像这样:

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 作为供应商。

我的问题是我想查询 A=20 和 B=30 的 part_id。

结果将是 part_id : 1 和 3

鉴于 A 和 B 在 2 个不同的行中,我该怎么做?这可能吗?

4

1 回答 1

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。

于 2013-02-16T05:20:36.553 回答