SQL加入同一个表

时间:2012-07-10 19:34:41

标签: sql oracle

我有一个包含以下列的表

  • product_types
  • brand_ids

我需要 brand_ids A和B,但不需要C

在此表中,可以有多个记录具有相同的product_type,但具有不同的brand_ids。

是否需要INNER SELF JOIN?或者有更好的方法吗?

3 个答案:

答案 0 :(得分:4)

SELECT A.product_type
FROM product_table A
JOIN product_table B ON A.product_type = B.product_type
LEFT JOIN product_table C ON A.product_type = C.product_type
                         AND c.brand_id = 'C'
WHERE A.brand_id = 'A'
  AND B.brand_id = 'B'
  AND c.brand_id IS NULL

答案 1 :(得分:0)

我将假设(PRODUCT_TYPE, BRAND_ID)是您桌子的唯一键。

这是一种做我认为你想做的事情的方法:

SELECT product_type FROM product_table
  WHERE brand_id IN ('A','B')
  GROUP BY product_type
  HAVING COUNT(*) = 2
MINUS
SELECT product_type FROM product_table
  WHERE brand_id IN ('C')

答案 2 :(得分:0)

您可以尝试此解决方案:

SELECT a.product_type
FROM
(
    SELECT product_type 
    FROM tbl 
    WHERE brand_id IN ('A', 'B')
    GROUP BY product_type
) a
LEFT JOIN tbl b ON a.product_type = b.product_type AND b.brand_id = 'C'
WHERE b.brand_id IS NULL