mysql 用于获取没有订单的所有客户的SQL语句

a8jjtwal  于 2023-01-25  发布在  Mysql
关注(0)|答案(5)|浏览(253)

我定义了一个典型的Persons表和一个Orders表,这样我就可以执行如下的JOIN查询来返回所有Persons的Orders。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.id=Orders.Person_id

问题是,我如何编写一个语句来返回所有Person with NO Orders?
我用的是mysql。
提前感谢所有人。

gblwokeq

gblwokeq1#

您可能需要使用LEFT JOINIS 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)中找不到任何匹配记录。如果没有匹配项,则“右”表的列在结果集中将为NULL

yb3bgrhw

yb3bgrhw2#

这应该行得通......有不止一种方法可以做到。

select * from persons where person.id not in (select person_id from orders)
7nbnzgx9

7nbnzgx93#

为了完整起见,下面是not exists版本:

select * from persons p 
where not exists
(select null from orders o where o.person_id = p.id)
1dkrff03

1dkrff034#

您可以使用左连接:

SELECT DISTINCT o.CustomerID from Orders as o
    left join Customers as c
    on o.CustomerID=c.CustomerID
hyrbngr7

hyrbngr75#

问题查找从未下过订单的客户。输出客户的名字。数据两个表:客户和订单

SELECT first_name
from customers
WHERE first_name not in 
(select first_name
from customers
 join orders on  customers.id=orders.cust_id)

相关问题