有两个表:users1和users2.他们都有name专栏.我需要选择表users1中不存在的所有用户users2.
我只能选择所有用户并通过PHP迭代它们,检查第二个表中的每个用户.
有没有办法通过SQL做到这一点?
SELECT `users1`.* FROM `users1` LEFT JOIN `users2` USING (`name`)
WHERE `users2`.`name` IS NULL
Run Code Online (Sandbox Code Playgroud)
为获得最佳性能,请确保name在两个表中都定义了索引.
这也可以通过子查询来完成(正如其他人已经指出的那样),但是连接将更快地执行.