标题可能听起来有点令人困惑,但让我解释一下:
我有三张桌子:
的存储
storeID | name
1 | store1
2 | store2
3 | store3
产品
productID | name
1 | ball
2 | cup
store_product
storeID_fk | productID_fk
2 | 1
1 | 2
3 | 2
我想要存档的结果如下:
storeID | name | storeID_fk | productID_fk
1 | store1| NULL | NULL
2 | store2| 2 | 1
3 | store3| NULL | NULL
到目前为止我尝试过:
SELECT * FROM `store`
LEFT JOIN `store_product` on storeID = storeID_fk
WHERE productID_fk = 1;
但这只会返回:
storeID | name | storeID_fk | productID_fk
2 | store2| 2 | 1
如何显示空/不存在的行?
答案 0 :(得分:2)
在执行left join
时,将右侧表格条件放在ON
子句中以获得真正的左连接行为。 (在WHERE
时,您会获得定期inner join
结果。)
SELECT * FROM `store`
LEFT JOIN `store_product` on storeID = storeID_fk
AND productID_fk = 1