アフィリエイト広告を利用しています

2020年09月20日

OUTER JOINを省略形で記述するとき

MysqlでOUTER JOIN結合を行おうとした。

テーブルAとテーブルBに共通の項目 member_id があり、

テーブルAにだけ保存されているデータを抽出しようとした。

長らく、JOINを使ったことがないのでこう書いた。


 SELECT * FROM テーブルA t1
 OUTER JOIN テーブルB t2 ON t1.member_id = t2.member_id
 WHERE t2.members_id is null


OUTERは使用できない旨のエラーメッセージが表示された。

納品まで数時間しかなかったので、

OUTER JOINをあきらめ、次のようにした。


 SELECT * FROM テーブルA t1 WHERE t1.member_id NOT IN (SELECT member_id FROM テーブルB )


30年以上前から使っている IN だが、結果はOK。そのまま納品した。

後で調べて見ると、OUTER JOINの構文はこうだった。


 SELECT * FROM テーブルA t1
 LEFT OUTER JOIN テーブルB t2 ON t1.member_id = t2.member_id
 WHERE t2.members_id is null


LEFT(またはRIGHT)は省略できないが、OUTERは省略できるとのこと。

納品したコードはすでに稼働しているので、修正は無理。

化石のような構文の使用は避けたかった。

次の改修時に修正しよう。







posted by db-engineer at 00:00 | Comment(0) | Mysql

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

検索
最新記事
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド