テーブル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は省略できるとのこと。
納品したコードはすでに稼働しているので、修正は無理。
化石のような構文の使用は避けたかった。
次の改修時に修正しよう。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image