6.17.2011

UNION 運算子 (SQL UNION Operator)

UNION 運算子用來將兩個(以上) SQL 查詢的結果合併起來,而由 UNION 查詢中各別 SQL 語句所產生的欄位需要是相同的資料型別及順序。

  • UNION查詢只會返回不同值的資料列,有如SELECT DISTINCT。
  • UNION就是像是OR(聯集),如果紀錄存在於第一個查詢結果集或第二個查詢結果集中,就會被取出。
  • UNION與Join不同的地方在於,Join是作橫向結合(合併多個資料表的各欄位);而UNION則是作垂直結合(合併多個資料表中的紀錄)。

    UNION 語法 (SQL UNION Syntax)

    SELECT column_name(s) FROM table_name1
    UNION
    SELECT column_name(s) FROM table_name2;

    UNION查詢返回的資料集欄位名稱,通常會依據第一個SELECT查詢的欄位名稱。

    UNION 運算子查詢實例 (Example)

    這是公司在台灣地區銷售的產品資料表「products_taiwan」:
    P_Id P_Name
    1 LCD
    2 CPU
    3 RAM


    這是公司在中國大陸地區銷售的產品資料表「products_china」:
    P_Id P_Name
    1 Keyboard
    2 CPU
    3 LCD


    現在我們想查出公司所有產品類別的資料,我們可以作一個 UNION 查詢:
    SELECT P_Name FROM products_taiwan
    UNION
    SELECT P_Name FROM products_china;

    查詢結果如下:
    P_Name
    LCD
    CPU
    RAM
    Keyboard




    UNION ALL

    相反的,UNION ALL 則會列出所有的資料,不論是否重複。

    SQL 查詢...
    SELECT P_Name FROM products_taiwan
    UNION ALL
    SELECT P_Name FROM products_china;

    查詢結果如下:
    P_Name
    LCD
    CPU
    RAM
    Keyboard
    CPU
    LCD
  • 沒有留言: