-1

次のテーブル スキーマがあります。

Table 1
-
field1
Table 2
-
field1 | field2

私がやりたいのは、2 番目のテーブルのfield1が最初のテーブル ( field1 )に存在しない 2番目のテーブルから field2 を選択することです。

私はこれを持っていました:

SELECT t2.field2
     , t2.field1
FROM table1 t1
   , table2 t2
WHERE t2.field1 != t1.field1

問題は、複数の行が table1 に適用される場合、このクエリが table2 から複数の繰り返される情報を取得することです。DISTINCTand/orを追加しましLIMITたが、まだ機能しません。これを行う方法について何か考えはありますか?

4

3 に答える 3

3

サブクエリを使用できます。

SELECT t2.field2, t2.field1 FROM table2 t2 WHERE t2.field1 NOT IN (SELECT t1.field1 FROM table1 t1);

これにより、にないtable2を持つすべての行が得られます。field1table1

さらに処理を行うために、最も外側のクエリでDISTINCTorを使用できるようになりました。LIMIT

于 2015-01-24T23:21:25.640 に答える
2

あなたの質問のタイトルは、あなたが必要とするほとんどのコマンドです: 'NOT EXIST'. SQLはとても簡単です。;)

SELECT DISTINCT t2.field2 
FROM Table2 t2
WHERE NOT EXISTS (SELECT * FROM Table1 WHERE t1.field1 = t2.field1)
于 2015-01-24T23:21:37.460 に答える
2

checkLEFT JOINと一緒に使用できます:IS NULL

SELECT DISTINCT t2.field2
FROM table2 t2
LEFT JOIN table1 t1 ON t1.field1 = t2.field1
WHERE t1.field1 IS NULL
于 2015-01-24T23:20:52.573 に答える