mysql从两个表中选择“无关系”

0lvr5msh  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我有两张table第一张有 PRODUCTS_ID 第二个表是产品之间的关系,例如产品1与产品(2,3,4,5)之间的关系,如 PRODUCT_CONN . 我需要得到的是表1中列出的与产品1无关的产品,那么结果应该是“6,7,8”。

TABLE 1
========
PRODUCTS_ID
    1   
    2   
    3   
    4
    5
    6
    7
    8   

TABLE2
======
PRODUCT_ID  | PRODUCT_CONN
    1       |   2
    1       |   3
    1       |   4
    1       |   5
zvokhttg

zvokhttg1#

可以这样做的一种方法是合并两个表,然后过滤行以丢弃与产品id 1有关系的行,如下一个示例中所示:

SELECT
    TABLE_1.PRODUCTS_ID
FROM
   TABLE_1
LEFT JOIN
   TABLE_2 ON TABLE_2.PRODUCT_CONN = TABLE_1.PRODUCTS_ID
WHERE
   TABLE_1.PRODUCTS_ID <> 1
AND
   (TABLE_2.PRODUCT_ID IS NULL OR TABLE_2.PRODUCT_ID <> 1)

或者,您可以先选择连接到id为1的产品的所有id,然后选择不在此集中的所有id,也不包括产品id 1,如下所示:

SELECT
    PRODUCTS_ID
FROM
    TABLE_1
WHERE
    PRODUCTS_ID NOT IN (SELECT PRODUCT_CONN
                        FROM TABLE_2
                        WHERE PRODUCT_ID = 1)
AND
    PRODUCTS_ID <> 1;

相关问题