店舗別で同一商品の商品IDを識別する時など、しばしば二つ以上のプライマリキーを使ってテーブルをJOINする場面がある。

通常このような場合、以下のようにANDで区切ってクエリを書くことになる。

1
2
3
4
5
6
7
8
SELECT
    *
FROM
    order_details as o
    INNER JOIN items as i
    ON o.shop_id = i.shop_id
        AND o.item_id = i.item_id
;

PostgreSQLでは、このようなクエリを簡潔に書くことができるUSING句というものが用意されている。

USING句を使ってシンプルに書く

前述のクエリをUSING句を使って書き直すと以下のようになる。

1
2
3
4
5
6
7
SELECT
    *
FROM
    order_details as o
    INNER JOIN items as i
    USING(shop_id, item_id)
;

こちらの方がコード量も少なく、見た目も簡潔なので積極的に使っていきたいところだが、他のRDBMSでは一般的ではないため多用するのはオススメしない。

ちょっとした分析で一度きりのクエリを書く場合などで使ってみると良いだろう。