0

両方に同様の列を持つ2つの異なるテーブルがあります。そして、テーブルAのすべての行をクエリする必要がありますが、それらの行がテーブルBに存在する場合は、テーブルAの特定の行を除外する必要があります。

例:

Table A
---------------------------------
item_id  |  item_name |  price
---------------------------------
  1      |   apple    |   100
---------------------------------
  2      |   banana   |   150
---------------------------------
  3      |   ginger   |   120
---------------------------------
  4      |   pear     |   150
---------------------------------
  5      |   berry    |   120
---------------------------------


Table B
---------------------------------
item_id  |  item_owner | 
---------------------------------
  1      |   Ben       |  
---------------------------------
  2      |   Damian    |  
---------------------------------
  3      |   Greg      |   
---------------------------------

上記の例に基づいて、item_idがテーブルBに存在しない場合は、クエリを実行してテーブルAのすべての行をフェッチする必要があります。

このクエリの結果は、次の2行のみをフェッチする必要があります。

---------------------------------
  4      |   pear     |   150
---------------------------------
  5      |   berry    |   120
---------------------------------

これで助けを得ることができてうれしいです...ありがとう!

4

4 に答える 4

1

使用するLEFT JOIN

SELECT  a.*
FROM    tableA a
        LEFT JOIN tableB b
            ON a.item_id = b.item_id
WHERE b.item_id IS NULL

パフォーマンスを向上させるには、サーバーが実行しないように、両方のテーブルにINDEXon列を定義する必要があります。item_idFULL TABLE SCAN

結合に関する知識を完全に得るには、以下のリンクにアクセスしてください。

于 2013-01-29T14:17:34.937 に答える
0
SELECT *
FROM TableA
WHERE item_id NOT IN(SELECT item_id  FROM tableb);

デモ

于 2013-01-29T14:17:30.287 に答える
0

これを試して::

Select 
A.*
from
A LEFT JOIN B on (A.item_id=B.item_id)
where B.item_id is null
于 2013-01-29T14:17:51.537 に答える
0

このクエリを試してください...

SELECT A.*
FROM   TableA A FULL OUTER JOIN TableB
       ON A.Item_id = B.Item_ID
WHERE  B.Item_ID IS NULL
于 2013-01-29T14:46:42.120 に答える