

テーブルA, B, Cがあり、特定のCに関連するAを求めたい。

[code]

    SELECT * 
    FROM A a
      INNER JOIN B b
        ON b.id = a.b_id
      LEFT JOIN C c
        ON c.b_id = b.id AND c.type = 'hogehoge'
    WHERE c.id IS NULL
    
[/code]

このとき、 `c.type = 'hogehoge'` 以外の type も抽出されてしまいます。


CC BY-SA 4.0
2019-01-07T01:59:54.820
51771
2019-01-07T06:56:23.513
12896
question
mysql
mysqlでleft joinした後にid is null としたとき、join の条件が消えてしまう


`type = 'hogehoge'`のレコードのみを抽出したいのであれば、`c.type =
'hogehoge'`を結合条件ではなく抽出条件にしましょう。

[code]

    SELECT * 
    FROM A a
      INNER JOIN B b
        ON b.id = a.b_id
      LEFT JOIN C c
        ON c.b_id = b.id
    WHERE c.type = 'hogehoge'
    
[/code]


CC BY-SA 4.0
2019-01-07T02:47:13.117
51777
2019-01-07T06:56:23.513
2019-01-07T06:56:23.513
2238
2238
51771
answer