一見同じに見えて全然違うよというお話
以下のようなテーブルを結合する事を考えよう
これをtableA
| ID | nama | age | 
| 1 | tom | 10 | 
| 2 | yuki | 10 | 
| 3 | toru | 11 | 
| 4 | marry | 11 | 
| 5 | sam | 11 | 
これをtableB
| ID | blood | sex | 
| 1 | A | man | 
| 2 | A | girl | 
| 3 | B | man | 
| 4 | O | girl | 
| 5 | AB | man | 
select * from tableA left join tableB on tableA.ID = tableB.ID where sex = 'man'
こちらの結果は以下
| ID | nama | age | blood | sex | 
| 1 | tom | 10 | A | man | 
| 3 | toru | 11 | B | man | 
| 5 | sam | 11 | AB | man | 
IDで結合したものから最後にmanで絞られる。
さて、こちらはどうか?select * from tableA left join tableB on tableA.ID = tableB.ID AND sex = 'man'こちらの結果は以下
| ID | nama | age | blood | sex | 
| 1 | tom | 10 | A | man | 
| 2 | yuki | 10 | null | null | 
| 3 | toru | 11 | B | man | 
| 4 | marry | 11 | null | null | 
| 5 | sam | 11 | AB | man | 
この場合、IDとsexがmanの場合に結合され、一致しなければnullが入る結果になる。
一見似ていてもちょっと違うだけで結果が異なってくる。
参考
https://qiita.com/zaburo/items/548b3c40fee68cd1e3b7 
https://www.grapecity.com/developer/support/powernews/column/how_to_database/012/page02.htm
 
  
  
  
  
コメント