欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中UNION 和 JOIN 多表聯(lián)合查詢方式

 更新時間:2024年11月20日 15:02:16   作者:碼農(nóng)研究僧  
本文介紹了在MySQL中UNION和JOIN兩種多表查詢的方式,包括它們的適用場景、語法和特性,JOIN用于關聯(lián)數(shù)據(jù),而UNION用于合并具有相同結(jié)構(gòu)但無直接關系的數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧

前言

在 MySQL 中,UNION 和 JOIN 是多表查詢的兩種主要方式。它們有不同的適用場景和語法

兩者的差異如下:

特性JOINUNION
數(shù)據(jù)組合橫向組合,合并兩表數(shù)據(jù)到一個行內(nèi)縱向組合,合并兩表數(shù)據(jù)到多個行
數(shù)據(jù)結(jié)構(gòu)要求表間需有關聯(lián)條件,如外鍵等列數(shù)和數(shù)據(jù)類型需一致
結(jié)果數(shù)據(jù)量結(jié)果記錄數(shù)量通常小于表數(shù)據(jù)量結(jié)果記錄數(shù)量可能增加
常用場景數(shù)據(jù)關聯(lián),如訂單與用戶信息查詢數(shù)據(jù)匯總,如多表的類似記錄組合

具體的使用選擇:

  • 使用 JOIN:

當需要將兩表數(shù)據(jù)按照某種邏輯相關聯(lián)時,選擇 JOIN

  • 使用 UNION:

當需要合并多表中具有相同結(jié)構(gòu)但無直接關系的數(shù)據(jù)時,選擇 UNION

1. JOIN

JOIN 用于在多個表之間按一定條件關聯(lián)數(shù)據(jù)

JOIN 查詢通過指定的條件(如外鍵關系)將表橫向組合

SELECT column_names
FROM table1
[INNER|LEFT|RIGHT] JOIN table2
ON table1.column_name = table2.column_name
WHERE conditions;

基本的類型有如下:

JOIN 類型

  • INNER JOIN(內(nèi)連接)

只返回兩個表中滿足 ON 條件的記錄
若某條記錄在任一表中沒有匹配項,則不會包含在結(jié)果中
常用于提取相關數(shù)據(jù)

  • LEFT JOIN(左連接)

返回左表中的所有記錄,以及右表中與左表記錄匹配的記錄
如果右表中沒有匹配項,則結(jié)果中該記錄右表的字段為 NULL
常用于查找左表中的數(shù)據(jù)即使右表沒有匹配項時

  • RIGHT JOIN(右連接)

返回右表中的所有記錄,以及左表中與右表記錄匹配的記錄
如果左表中沒有匹配項,則結(jié)果中該記錄左表的字段為 NULL
不如 LEFT JOIN 常用

  • FULL OUTER JOIN(全連接) (MySQL 不直接支持,但可通過 UNION 模擬)

返回兩個表中所有記錄,不論是否有匹配項
不支持時用以下替代:

SELECT ...
FROM table1
LEFT JOIN table2 ON condition
UNION
SELECT ...
FROM table1
RIGHT JOIN table2 ON condition;

2. UNION

UNION 用于將兩個或多個查詢結(jié)果縱向組合為一個結(jié)果集。它對查詢的列數(shù)和數(shù)據(jù)類型有要求

基本的語法如下:

SELECT column_names
FROM table1
WHERE conditions
UNION [ALL]
SELECT column_names
FROM table2
WHERE conditions;

注意事項有如下:

  • 默認去重:

UNION 會去掉結(jié)果集中重復的記錄
若需要保留所有重復記錄,使用 UNION ALL

  • 列數(shù)和數(shù)據(jù)類型要求:

所有參與查詢的 SELECT 語句必須有相同的列數(shù)
每列的數(shù)據(jù)類型必須兼容

  • 結(jié)果排序:

可以通過在 UNION 之后的結(jié)果集中加 ORDER BY 對整體結(jié)果排序

到此這篇關于MySQL中UNION 和 JOIN 多表聯(lián)合查詢方式的文章就介紹到這了,更多相關mysql union和join內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論