如何选择SQL中的表中不存在的记录?

时间:2017-02-05 21:25:45

标签: mysql sql join

我有2个SQL表,其中包含以下列:

“的用户”: 用户ID 名字姓氏

“的订单”: orderid 用户ID orderdate shippingdate

我被告知我可以使用联接来实现我想要的,但我不知道联接是如何工作的。

我们的想法是从未下订单的“用户”中选择所有用户;用户标识定义的“orders”表中没有行的用户。

到目前为止,这就是我的全部内容:

select users.userid, users.firstname, users.lastname, orders.*
from users
join orders on orders.userid = users.userid

但这只会返回DID下订单的用户。我将如何扩展以获得尚未下订单的用户?根据我的理解,联接意味着获取更多信息,而不是缺乏信息。

一些信息: 我在Windows 10上使用最新版本的HeidiSQL。

1 个答案:

答案 0 :(得分:2)

您不需要联接来执行此操作,请执行:

select * from users where userid not in (select userid from orders)

您也可以使用LEFT JOIN:

SELECT * FROM users
LEFT JOIN orders ON users.userid= orders.userid
WHERE orders.users IS NULL