【发布时间】:2016-04-05 11:06:39
【问题描述】:
我有两张桌子,a 和 b
表一
--------------------
|id | item |
--------------------
|1 | apple |
--------------------
|2 | orange |
--------------------
|3 | mango |
--------------------
|4 | grapes |
--------------------
|5 | plum |
--------------------
|6 | papaya |
--------------------
|7 | banana |
--------------------
表b
----------------------------
user_id | item_id | price |
----------------------------
32 | 3 | 250 |
----------------------------
32 | 6 | 180 |
----------------------------
32 | 2 | 120 |
----------------------------
现在我想加入 MySql 中的两个表,以便获得表 a 中所有水果的列表以及它们的价格,如用户 32 的表 b 中;像这样:
-----------------------------
|id | item | price |
-----------------------------
|1 | apple | |
-----------------------------
|2 | orange | 120 |
------------------------------
|3 | mango | 250 |
------------------------------
|4 | grapes | |
------------------------------
|5 | plum | |
------------------------------
|6 | papaya | 180 |
------------------------------
|7 | banana | |
------------------------------
我能做的最好的就是:
SELECT a.id,
a.item,
b.price
FROM a
INNER JOIN b ON a.id = b.item_id
WHERE b.user_id = 32
这只会给我已设置价格的行,而不是未设置价格的行。如何构建 SQL?
【问题讨论】:
-
使用
LEFT JOIN代替INNER JOIN并将WHERE更改为AND。 -
使用 LEFT JOIN,也许您可以尝试sqlyog,它可以帮助您使用具有正确语法的查询生成器功能生成查询。
-
不要修改问题中的查询以匹配答案。这样做会删除问题的原始含义并使所有已发布的答案无效。
标签: mysql sql select join left-join