SELECT
*
FROM
food_types ft
LEFT JOIN
member_has_food_types mhft ON (ft.food_id = mhft.food_id)
WHERE mhft.member_id = 3230
好的,这里是数据库表
食物类型:
FOOD_ID | FOOD_TYPE | STATE
1 APPLE 1
2 ORANGE 1
3 BANANA 1
4 CAKE 1
5 BACON 1
member_has_food_types:
FOOD_ID | MEMBER_ID
1 3230
2 3230
4 3230
5 3230
因为member_has_food_types不包含3号食物,所以报告回复如下:
FOOD_ID | FOOD_TYPE | STATE | FOOD_ID | MEMBER_ID
1 APPLE 1 1 3230
2 ORANGE 1 2 3230
4 CAKE 1 4 3230
5 BACON 1 5 3230
但我希望它包含像这样的
FOOD_ID | FOOD_TYPE | STATE | FOOD_ID | MEMBER_ID
1 APPLE 1 1 3230
2 ORANGE 1 2 3230
3 BANANA 1 NULL NULL
4 CAKE 1 4 3230
5 BACON 1 5 3230
我的理解是它没有为这些字段显示NULL,因为我加入了food_id。那么有什么聪明的方法可以解决这个问题吗?
答案 0 :(得分:1)
将过滤器移动到连接
SELECT * FROM food_types ft
LEFT JOIN member_has_food_types mhft ON ft.food_id = mhft.food_id
AND mhft.member_id = 3230