中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中union和union?all如何使用及注意事項是什么

發布時間:2022-08-05 15:54:28 來源:億速云 閱讀:151 作者:iii 欄目:開發技術

這篇文章主要講解了“mysql中union和union all如何使用及注意事項是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“mysql中union和union all如何使用及注意事項是什么”吧!

    1. sql中 union 和 union all 的用法

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

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

    union:對兩個結果集進行并集操作,不包括重復行,同時進行默認規則的排序;union 在進行表鏈接后會篩選掉重復的記錄,所以在表鏈接后會對所產生的結果集進行排序運算,刪除重復的記錄再返回結果。實際大部分應用中是不會產生重復的記錄,最常見的是過程表與歷史表 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'

    結果:

    mysql中union和union?all如何使用及注意事項是什么

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

    如下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'

    結果:

    mysql中union和union?all如何使用及注意事項是什么

    2. 注意事項

    2.1、UNION 和 UNION ALL 內部的 SELECT 語句必須擁有相同數量的列

    mysql中union和union?all如何使用及注意事項是什么

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

    先來說下,如果順序不同,會是什么結果?

    答:結果字段的順序以union all 前面的表字段順序為準。

    union all 后面的表的數據會按照順序依次附在后面。注意:按照字段順序匹配,而不是按照字段名稱匹配。

    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

    mysql中union和union?all如何使用及注意事項是什么

    綜上:

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

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

    mysql中union和union?all如何使用及注意事項是什么

    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>

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

    補充:mysql中union和union all的區別

    一、區別1:取結果的交集

    1、union: 對兩個結果集進行并集操作, 不包括重復行,相當于distinct, 同時進行默認規則的排序;

    2、union all: 對兩個結果集進行并集操作, 包括重復行, 即所有的結果全部顯示, 不管是不是重復;

    二、區別2:獲取結果后的操作

    1、union: 會對獲取的結果進行排序操作

    2、union all: 不會對獲取的結果進行排序操作

    三、區別3:

    1、union看到結果中ID=3的只有一條

    select * from student2 where id < 4
    union
    select * from student2 where id > 2 and id < 6

    2、union all 結果中ID=3的結果有兩個

    select * from student2 where id < 4
    union all
    select * from student2 where id > 2 and id < 6

    感謝各位的閱讀,以上就是“mysql中union和union all如何使用及注意事項是什么”的內容了,經過本文的學習后,相信大家對mysql中union和union all如何使用及注意事項是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    田东县| 衢州市| 阜阳市| 米易县| 六安市| 安新县| 驻马店市| 灌云县| 马公市| 赤壁市| 沙田区| 防城港市| 遂溪县| 万山特区| 贵溪市| 青神县| 天水市| 福泉市| 安多县| 陇西县| 迭部县| 镇原县| 浪卡子县| 宝鸡市| 杂多县| 建始县| 砀山县| 黑龙江省| 界首市| 扶风县| 万盛区| 阳城县| 扎囊县| 南康市| 搜索| 武陟县| 枣庄市| 景泰县| 于都县| 施甸县| 和静县|