选择其他表中不存在的所有行

Qia*_*iao 1 mysql left-join

有两个表:users1users2.他们都有name专栏.我需要选择表users1中不存在的所有用户users2.

我只能选择所有用户并通过PHP迭代它们,检查第二个表中的每个用户.

有没有办法通过SQL做到这一点?

awm*_*awm 6

SELECT `users1`.* FROM `users1` LEFT JOIN `users2` USING (`name`)
        WHERE `users2`.`name` IS NULL
Run Code Online (Sandbox Code Playgroud)

为获得最佳性能,请确保name在两个表中都定义了索引.

这也可以通过子查询来完成(正如其他人已经指出的那样),但是连接将更快地执行.