全部產品
Search
文件中心

OpenSearch:JOIN操作類型

更新時間:Aug 22, 2026

本文為您介紹了左串連、內串連、半串連、反串連四種Join操作類型。

Left Outer Join:

  • 左串連。返回左表中的所有記錄,即使右表中沒有與之匹配的記錄。

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

如果右表值不唯一,建議不要連續使用過多left join,以免在JOIN過程中產生資料膨脹。

Inner Join:

  • 內串連。關鍵字inner可以省略。返回滿足ON條件的行。

SELECT
  t1.id, t2.id
FROM
  tj_shop AS t1
JOIN
  tj_item AS t2
ON
  t1.id = t2.id
  • 支援ON條件恒為TRUE,此時返回兩表的笛卡爾積,下述兩條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;

Semi Join:

  • 半串連,SEMI JOIN中,右表只用於過濾左表的資料而不出現在結果集中。

  • 當join條件成立時,返回左表中的資料。如果tj_shop中某行的id在tj_item的所有id中出現過,則此行保留在結果集中。

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
)

Anti Join:

  • 反串連,Anti JOIN中,右表只用於過濾左表的資料而不出現在結果集中。

  • 當join條件不成立時,返回左表中的資料。如果tj_shop中某行的id在tj_item的所有id中不存在,則此行保留在結果集中。

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
)