INNER JOIN と LEFT OUTER JOIN

SQLの構文でINNER JOINとLEFT OUTER JOINってのがあると思います。

 
複数テーブルから関連するデータを引き出すときに使用するものです。僕は今まで何の疑問も持たずINNER JOINを使用していました。ですが先日

 
あるテーブルのデータを削除するときに一方のテーブルにはデータがあり、もう一方のデータにはキーに関連するデータが無かった時のことです。

 
データの削除ができない…!

 
それもそのはず。INNER JOINは関連するデータがすべて揃っている場合にのみテーブルを構築するのです。なので結合先にデータが無い場合は一方のテーブルにデータがあっても結合テーブルとしては表示されないのです。

 
ここで悩みました。それではいちいち複数テーブルに対してDELETEのクエリを実行しなければならないのかと。

 
ところがこれはあっさり解決。SQLにはLEFT OUTER JOINというものが用意されており、これを使用すると結合先にキーに関連するデータが無くてもそれは空のカラムとして結合テーブルを作成してくれるのです。

 
知らなかった。世の中にはもっと自分が知らなくて便利なことがたくさんありそうです。

中小企業内でITを担当する職員として働いてますYOHEIです(社内SE?)。ほぼ一人職場なので悠々自適に過ごしてますが、たまに仕事の相談相手がいないのが寂しいっちゃ寂しい。趣味はあれこれ考えて結局何も買わないウィンドウショッピングと、買いもしない中古車の情報サイトを巡ること。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です