【发布时间】:2017-02-05 21:25:44
【问题描述】:
我有 2 个包含以下列的 SQL 表:
“用户”: 用户 ID、名字、姓氏
“订单”: orderid、userid、orderdate、shippingdate
有人告诉我,我可以使用连接来实现我正在寻找的东西,但我不知道连接是如何工作的。
想法是从没有下单的“用户”中选择所有用户;用户 ID 定义的“订单”表中没有一行的用户。
这就是我目前所拥有的:
select users.userid, users.firstname, users.lastname, orders.*
from users
join orders on orders.userid = users.userid
但这只会返回 DID 下订单的用户。我将如何扩展以获取尚未下订单的用户?据我了解,加入是为了获取更多信息,而不是缺少信息。
一些信息: 我在 Windows 10 上使用最新版本的 HeidiSQL。
【问题讨论】:
-
left join orders on orders.userid = users.userid where orders.userid is null -
Paul,您的解决方案与 Mithilesh 的解决方案一样有效。唯一的区别是连接只给出了一堆空列。有人愿意为此使用联接有什么原因吗?
-
您选择了
orders.*,即使您只想要没有订单的条目。 -
没错,但无论如何,即使orders.* 可能不存在,SQL 不会只是填补那里的空白,然后像您刚刚向我展示的查询那样将所有内容都归零吗?