MYSQL - 如何让这个左连接工作?

时间:2017-12-01 15:58:20

标签: mysql join

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。那么有什么聪明的方法可以解决这个问题吗?

1 个答案:

答案 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