好的我的目标是查询表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行“
任何帮助?
我在互联网上发现的一些文章也表明联接会更有效率,但其他人则表示不存在的情况更好。哪条路线效率更高?
由于
答案 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