首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL UNION vs JOIN 核心差異:縱向合併與橫向擴展的選型指南

     編輯:MySQL 綜合教學

一句話區別

  • UNION:縱向合併結果集(行數相加),要求列數、列型別完全一致
  • JOIN:橫向擴展結果集(列數相加),基於關聯條件匹配行

UNION 詳細規則

tmp_atmp_bUNIONUNION ALL

libingxue 1001libingxue 10011 行2 行
yuwen 1002feiyao 1003共 3 行共 4 行



Hive/Spark SQL 特殊語法

-- 需求:兩表同結構,取 user_id, shop_id 維度的最新 auction_id, search_time
-- 方案 1:UNION ALL + GROUP BY
SELECT user_id, shop_id, MAX(auction_id), MAX(search_time)
FROM (SELECT * FROM resource UNION ALL SELECT * FROM result) t
GROUP BY user_id, shop_id;

-- 方案 2:JOIN(需一對一或取最新一行)
SELECT t1.user_id, t1.shop_id, t2.auction_id, t2.search_time
FROM resource t1 JOIN result t2
  ON t1.user_id=t2.user_id AND t1.shop_id=t2.shop_id;

兩者結果相同時,優先選 UNION ALL + GROUP BY(語義清晰、不依賴關聯基數),或根據 EXPLAIN 成本選擇。

標準 SQL UNION 連接範例

Table1 Table2 UNION 結果

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved