🐘

活用しよう、JOINの結合条件[postgreSQL]

に公開

JOIN ON

select hoge.piyo, hogera from hoge
join fuga on hoge.piyo = fuga.piyo;

って書くのだるくないですか。そうじゃない人はブラウザバックしてください。
そうなんです。解決策はあるんです。

JOIN USING

select piyo, hogera from hoge
join fuga using(piyo);

おんなじキーを持つテーブルの結合は"リレーショナル"データベースの要です。
using句を使うと結合する左右のテーブルの指定カラムで結合します。
注目点はhoge.piyopiyoになっているところです。
どういうことかというと、usingは一つのカラムにまとめるのでキー重複エラーが出ないのです。
ちなみにusing()の後にasをつけると、結合カラムが指定名のテーブルのものとして参照できます。

NATURAL JOIN

select piyo, hogera from hoge
natural join fuga;

でも、using句書くのも少しだるいですよね。
そんなあなたにはこれ。左右テーブルの同じ名前のカラムを全部結合条件として結合します。
共通の列名がない時には、join on trueと同じ結果になるようなので注意。

参考

https://www.postgresql.jp/document/16/html/sql-select.html
みんなもドキュメントに一度は目をとうそう。(できてない)

Discussion