すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:JOIN 操作の種類

最終更新日:Jun 19, 2026

OpenSearch は、左結合、内部結合、セミ結合、アンチ結合の 4 種類の JOIN 操作をサポートしています。

左外部結合

  • 左結合は、右テーブルに一致するレコードがない場合でも、左テーブルのすべてのレコードを返します。

SELECT
  t1.id, t2.id
FROM
  tj_shop AS t1
LEFT JOIN
  tj_item AS t2
ON
  t1.id = t2.id
説明

右テーブルの値が一意でない場合は、JOIN 処理中のデータ肥大化を防ぐために、多数の left join 操作を連続して使用しないでください。

内部結合

  • 内部結合は、ON 条件を満たす行を返します。 inner キーワードは省略できます。

SELECT
  t1.id, t2.id
FROM
  tj_shop AS t1
JOIN
  tj_item AS t2
ON
  t1.id = t2.id
  • ON 条件が常に TRUE の場合、この操作は 2 つのテーブルのデカルト積を返します。次の 2 つの SQL 文は同等です。

SELECT
  t1.id, t2.id
FROM
  tj_shop AS t1
JOIN
  tj_item AS t2
ON
  TRUE

SELECT
  t1.id, t2.id
FROM
  tj_shop, tj_item;

セミ結合

  • セミ結合では、右テーブルは左テーブルのデータをフィルターするためにのみ使用され、結果セットには表示されません。

  • join 条件が満たされると、この操作は左テーブルのデータを返します。 tj_shop テーブルの idtj_item テーブルに存在する場合、その行が返されます。

SELECT
  id
FROM
  tj_shop
WHERE id IN (
  SELECT 
    id 
  FROM 
    tj_item
)
SELECT
  id
FROM
  tj_shop
WHERE EXISTS (
  SELECT 
    id 
  FROM 
    tj_item
  WHERE
    tj_shop.id = id
)

アンチ結合

  • アンチ結合では、右テーブルは左テーブルのデータをフィルターするためにのみ使用され、結果セットには表示されません。

  • join 条件が満たされない場合、この操作は左テーブルのデータを返します。 tj_shop テーブルの idtj_item テーブルに存在しない場合、その行が返されます。

SELECT
  id
FROM
  tj_shop
WHERE id NOT IN (
  SELECT 
    id 
  FROM 
    tj_item
)
SELECT
  id
FROM
  tj_shop
WHERE NOT EXISTS (
  SELECT 
    id 
  FROM 
    tj_item
  WHERE
    tj_shop.id = id
)