1. 程式人生 > 資料庫 >MySQL-17組合查詢-必知必會

MySQL-17組合查詢-必知必會

利用UNION操作符將多條SELECT語句組合成一個結果集。一般SQL查詢只包含從一個/多個表中返回的單條SELECT語句,MySQL允許多個查詢並將結果作為單個查詢結果集返回

  • 什麼時候使用組合查詢?

    • 1、在單個查詢中從不同的表返回類似結構的資料
    • 2、在單個表執行多個查詢,按單個查詢返回資料
    • 具有多個WHERE子句的SELECT語句都可以作為一個組合查詢給出
  • 使用UNION操作符來組合多條SQL查詢

    #需要價格<=5的所有物品的一個列表,還想要包括供應商1001和1002生產的所有物品(不考慮價格)
    SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5;
    SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);
    #使用組合查詢,就能把結果合併到一起
    SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5
    UNION
    SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);
    #也可以使用多個WHERE子句執行相同的查詢
    SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5 OR vend_id IN (1001,1002);
    
    • UNION必須由兩條以上的SELECT語句組成,語句之間用NUNION分隔
    • 每個SELECT查詢必須包含相同的列、表示式或聚集函式,不需要順序一致
    • 列的資料型別必須相容,不完全相同時用DBMS轉型
  • 包含或取消重複的行

    UNION從結果集中自動去除重複的行,想返回所有的用UNION ALL關鍵字就不會去重

  • 對查詢結果排序

    在最後一條SELECT語句後接一條ORDER BY子句,不允許多條ORDER BY子句