我有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。
答案 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