Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL在同一个表中联接_Sql_Oracle - Fatal编程技术网

SQL在同一个表中联接

SQL在同一个表中联接,sql,oracle,Sql,Oracle,我有一个包含以下列的表 产品类型 品牌标识 我需要品牌标识A和B,但不需要C 在此表中,可以有多个记录具有相同的产品类型,但具有不同的品牌ID 这可能是内在自我连接的需要吗?或者有更好的方法吗?我假设(产品类型、品牌ID)是表的唯一键 这里有一种方法可以实现我认为您所追求的目标: SELECT product_type FROM product_table WHERE brand_id IN ('A','B') GROUP BY product_type HAVING COUNT

我有一个包含以下列的表

  • 产品类型
  • 品牌标识
我需要品牌标识A和B,但不需要C

在此表中,可以有多个记录具有相同的产品类型,但具有不同的品牌ID


这可能是内在自我连接的需要吗?或者有更好的方法吗?

我假设
(产品类型、品牌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')

您可以尝试以下解决方案:

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

如果需要数据库帮助,请发送示例数据和预期结果。这是帮助你最简单的方法,因为我不知道你在问什么。你是说
还是
而不是
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