1つのテーブル内に存在するすべてのアイテムは、他に存在するかどうかを確認MySQLの

APorter1031:

1つのテーブル内のすべての項目は、別の内に存在するかどうかはどのように確認することができます。たとえば、次の2つの表を考えてみましょう。

それぞれのクエリの場合:

SELECT orderID
FROM orders
WHERE customer_id = 1;

TABLE A
-------

orderID
2
1
6
4
SELECT orderID
FROM orders
WHERE customer_id = 2;

TABLE B
-------

orderID
5
1
7
9

表Aからすべての項目は、表B内に存在していないので、私は何も出力したくありません

しかし、私が持っていました。

SELECT orderID
FROM orders
WHERE customer_id = 3;

TABLE C
-------

orderID
5

表C内のすべての項目は、表Bにあるので、私は出力にそれを望みます

私は表Cで選択を行うとしたら、私は、テーブルCを出力することが期待されます。

私は、次のクエリを試してみました:

SELECT *
FROM (SELECT orderID
FROM orders
WHERE customer_id = 1) A
WHERE A.orderID IN (
SELECT orderID
FROM orders
WHERE customer_id = 2);
アンドリュー:

あなたはバイ・顧客ごとにチェックすることができれば、あなたはこれを行うことができます。

IF (NOT EXISTS
    SELECT NULL
    FROM orders
    WHERE customer_id = 1 -- "Table A"
    AND orderID NOT IN 
        -- "Table B"
        (SELECT orderID
        FROM orders
        WHERE customer_id = 2)
    )
    SELECT orderID
    FROM orders
    WHERE customer_id = 1;

ここでクエリが基本的に存在しない場合はテーブルBに存在しないテーブルAからの注文を取得し、それが次に終了時に選択を行います。それ以外の場合は、何もしません。

あなたが使用している場合はcustomer_id = 3代わりに、あなたはのorderID 5(「表C」)で1行を取得します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=24093&siteId=1