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

mysql的union和union all用法詳解

 更新時間:2023年08月25日 10:23:09   作者:如來神掌十八式  
union 和 union all 的區(qū)別是,union 會自動壓縮多個結果集合中的重復結果,而 union all 則將所有的結果全部顯示出來,不管是不是重復,本文給大家介紹mysql的union和union all用法,感興趣的朋友一起看看吧

1. sql中 union 和 union all 的用法

如果我們需要將兩個 select 語句的結果作為一個整體顯示出來,我們就需要用到 union 或者 union all 關鍵字。union (或稱為聯(lián)合)的作用是將多個結果合并在一起顯示出來。

unionunion all 的區(qū)別是,union 會自動壓縮多個結果集合中的重復結果,而 union all 則將所有的結果全部顯示出來,不管是不是重復。

union:對兩個結果集進行并集操作,不包括重復行,同時進行默認規(guī)則的排序;union 在進行表鏈接后會篩選掉重復的記錄,所以在表鏈接后會對所產(chǎn)生的結果集進行排序運算,刪除重復的記錄再返回結果。實際大部分應用中是不會產(chǎn)生重復的記錄,最常見的是過程表與歷史表 union。如下sql:

SELECT create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'
UNION
SELECT create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'

結果:

001.png

union all:對兩個結果集進行并集操作,包括重復行,不進行排序; 如果返回的兩個結果集中有重復的數(shù)據(jù),那么返回的結果集就會包含重復的數(shù)據(jù)了。如下sql:

SELECT create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'
UNION ALL
SELECT create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'

結果:

2. 注意事項

2.1、UNION 和 UNION ALL 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列

image.png

2.2、每條 SELECT 語句中列的順序必須相同

  • 先來說下,如果順序不同,會是什么結果?
    答:結果字段的順序以union all 前面的表字段順序為準。
    union all 后面的表的數(shù)據(jù)會按照順序依次附在后面。注意:按照字段順序匹配,而不是按照字段名稱匹配。

  • sql如下:順序對結果的影響

sql如下:順序對結果的影響

SELECT * 
FROM(
	SELECT msku,create_time FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK'
UNION ALL
	SELECT create_time,msku FROM `e_msku_sku` WHERE msku = '21-BQLEDNL120W-BK') t

image.png

綜上:

union all 結果字段的順序以 union all 前面的表字段順序為準。union all 后面的表的數(shù)據(jù)會按照字段順序依次附在后面,而不是按照字段名稱匹配。

我們上面以*來表示順序的不同,其實你寫成不同順序的字段結果一致。

image.png

3. union all 使用場景

  • sql 中的組合in,可用 union all 來代替,提高查詢效率

修改前:組合in sql

SELECT ***, ***, ***, ***, ***
FROM e_rating_info 
WHERE rating_quantity <> 0 AND (***, ***) 
IN (('***', '***'), ('***', '***'), 
('***', '***'), ('***', '***'), 
('***', '***'), ('***', '***'), 
('***', '***'), ('***', '***'), 
('***', '***'), ('***', '***')) 
ORDER BY *** DESC

修改后:UNION ALL sql

<select id="queryRatingInfo" resultType="***">
        <foreach collection="ratingList" item="item" index="index" open="" separator="UNION ALL" close="">
            SELECT ***, ***, ***, ***, ***
            FROM e_rating_info
            WHERE rating_quantity &lt;&gt; 0
            AND country_code = #{item.***}
            AND asin = #{item.***}
        </foreach>
        ORDER BY *** DESC;
    </select>

另外,如果系統(tǒng)中進行了分表,一定要保證各個表的字段順序一致。特別是修改的時候。否則,如果使用 *匯總查詢結果,肯定是會有問題的…親身踩坑。

到此這篇關于mysql的union和union all用法詳解的文章就介紹到這了,更多相關mysql union和union all內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mysql中LEFT JOIN和JOIN查詢區(qū)別及原理詳解

    Mysql中LEFT JOIN和JOIN查詢區(qū)別及原理詳解

    這篇文章主要介紹了Mysql中LEFT JOIN和JOIN查詢區(qū)別及原理詳解,Nested Loop Join 實際上就是通過驅動表的結果集作為循環(huán)基礎數(shù)據(jù),然后一條一條的通過該結果集中的數(shù)據(jù)作為過濾條件到下一個表中查詢數(shù)據(jù),然后合并結果,需要的朋友可以參考下
    2023-08-08
  • mysql中如何查詢數(shù)據(jù)庫中的表名

    mysql中如何查詢數(shù)據(jù)庫中的表名

    這篇文章主要介紹了mysql中如何查詢數(shù)據(jù)庫中的表名問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Mysql中存儲引擎的區(qū)別及比較

    Mysql中存儲引擎的區(qū)別及比較

    這篇文章主要介紹了Mysql中存儲引擎的區(qū)別及比較,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • IP處理函數(shù)inet_aton()和inet_ntoa()使用說明

    IP處理函數(shù)inet_aton()和inet_ntoa()使用說明

    IP處理函數(shù)inet_aton()和inet_ntoa()使用說明,需要的朋友可以參考下
    2012-03-03
  • mySQL中LEN()與DATALENGTH()的區(qū)別

    mySQL中LEN()與DATALENGTH()的區(qū)別

    LEN返回指定字符串表達式的字符數(shù),其中不包含尾隨空格。DATALENGTH返回用于表示任何表達式的字節(jié)數(shù)。
    2011-03-03
  • Mysql中的Datetime和Timestamp比較

    Mysql中的Datetime和Timestamp比較

    這篇文章主要介紹了Mysql中的Datetime和Timestamp比較,本文總結了它們的相同點和不同點以及時間格式介紹等,需要的朋友可以參考下
    2015-03-03
  • MySQL學習之數(shù)據(jù)更新操作詳解

    MySQL學習之數(shù)據(jù)更新操作詳解

    這篇文章我們將學習一下用于數(shù)據(jù)更改的 “UPDATE” 語句, “UPDATE” 語句也是屬于 DML 這一類數(shù)據(jù)庫操作語言,感興趣的可以了解一下
    2022-08-08
  • Mysql之SQL執(zhí)行流程全面解析

    Mysql之SQL執(zhí)行流程全面解析

    MySQL的執(zhí)行流程包括查詢緩存、解析器、優(yōu)化器和執(zhí)行器,首先,查詢緩存檢查是否存在查詢結果,如果存在則直接返回;如果不存在,則進入解析器進行語法和語義分析,解析器將SQL語句轉換為語法樹,并進行詞法和語法分析,接著,優(yōu)化器確定最佳執(zhí)行路徑
    2024-12-12
  • mysql 一個較特殊的問題:You can''t specify target table ''wms_cabinet_form''

    mysql 一個較特殊的問題:You can''t specify target table ''wms_cabinet

    mysql 一個較特殊的問題:You can't specify target table 'wms_cabinet_form' for update in F
    2010-11-11
  • MySQL配置文件my.cnf中文詳解附mysql性能優(yōu)化方法分享

    MySQL配置文件my.cnf中文詳解附mysql性能優(yōu)化方法分享

    Mysql參數(shù)優(yōu)化對于新手來講,是比較難懂的東西,其實這個參數(shù)優(yōu)化,是個很復雜的東西,對于不同的網(wǎng)站,及其在線量,訪問量,帖子數(shù)量,網(wǎng)絡情況,以及機器硬件配置都有關系,優(yōu)化不可能一次性完成,需要不斷的觀察以及調(diào)試,才有可能得到最佳效果。
    2011-09-09

最新評論