-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

尝试替换tabletable1

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

我认为你必须这样:

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

这意味着查询从 table1 中选择UUIDtable1中不存在于 table2中的所有记录

于 2012-02-06T02:38:05.373 回答
0

您总是可以使用 aLEFT 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 回答