-1

私の目的は、テーブル 1 にデータを照会することですが、テーブル 2 をチェックして、データがまだ表示されていないことを確認してください。

各データには、UUID 列の下にある ID があります。

Select * FROM table1 Where Not Exists (SELECT * FROM table2 WHERE table2.UUID = table1.UUID);

しかし、私は調査し、そのクエリを作成するためにあらゆる可能な方法を試しましたが、取得し続けています:

「エラー 1064 (42000): SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、'WHERE NOT EXISTS (SELECT * FROM table2 WHERE table2.UUID = table1.UUID ) 行 1"

何か助けはありますか?

また、インターネットで見つけた記事の中には、結合した方が効率的であることを示唆しているものもあれば、存在しない方が良いと述べているものもあります。より効率的なルートはどれですか?

ありがとう

4

3 に答える 3

2

私はあなたがこのようにしなければならないと思います:

SELECT UUID, ...
FROM Table1
WHERE UUID NOT IN
        (SELECT UUID FROM Table2 WHERE Table2.UUID = Table1.UUID)

これは、クエリがUUID、table1の table2 に存在しないすべてのレコードを table1 から選択することを意味します。

于 2012-02-06T02:38:05.373 に答える
2

に置き換えtableてみてくださいtable1

SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table2.UUID = table1.UUID);
于 2012-02-06T02:30:54.910 に答える
0

代わりに、いつでもを使用しLEFT JOINて確認できNULLます。

SELECT a.*
FROM table1 AS a
LEFT JOIN table2 AS b ON a.UUID=b.UUID
WHERE b.UUID IS NULL
于 2012-02-06T02:47:26.553 に答える