我有一个典型的Persons表和一个Orders表,定义如下,我可以执行JOIN查询作为以下命令返回所有人的命令.
SELECT Persons.LastName,Persons.FirstName,Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.id=Orders.Person_id
问题是,如何撰写一份可以退还所有没有订单的人的声明?
我正在使用MysqL.
提前感谢.
解决方法
您可能需要使用LEFT JOIN和IS NULL:
SELECT Persons.LastName,Persons.FirstName FROM Persons LEFT JOIN Orders ON Persons.id = Orders.Person_id WHERE Orders.Person_id IS NULL;
左连接的结果总是包含“左”表(Persons)的所有记录,即使连接条件在“右”表(Orders)中找不到任何匹配记录.当没有匹配时,“right”表的列在结果集中将为NULL.