选择*不存在的地方给我错误

时间:2012-02-06 02:26:24

标签: php mysql join not-exists

好的我的目标是查询表1中的数据,但请确保通过检查表2来确定数据尚未显示。

每个数据的ID都在UUID列下。

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

但是我已经研究过,并且我已经尝试了所有可能的方式来编写该查询,并且我一直在努力:

“ERROR 1064(42000):您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在'WHERE NOT EXISTS附近使用正确的语法(SELECT * FROM table2 WHERE table2.UUID = table1.UUID)在第1行“

任何帮助?

我在互联网上发现的一些文章也表明联接会更有效率,但其他人则表示不存在的情况更好。哪条路线效率更高?

由于

3 个答案:

答案 0 :(得分:2)

尝试将table替换为table1

SELECT * FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table2.UUID = table1.UUID);

答案 1 :(得分:2)

我认为你必须这样:

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

这意味着查询选择table1中的所有记录,其中table1 中的UUID不存在在表2中

答案 2 :(得分: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