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

溫馨提示×

溫馨提示×

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

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

mysql如何實現合并結果集并去除重復值

發布時間:2022-12-28 09:49:39 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

本篇內容介紹了“mysql如何實現合并結果集并去除重復值”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    mysql 合并結果集并去除重復值

    SELECT DISTINCT c.parent_id from (     SELECT parent_id  FROM tp_goods_category a join tp_goods g on a.id = g.cat_id GROUP BY parent_id UNION ALL  SELECT cat_id FROM tp_goods GROUP BY cat_id ) c;

    先去除每個結果集中的重復值 以 group by 方式除去

    SELECT parent_id  FROM tp_goods_category a join tp_goods g on a.id = g.cat_id GROUP BY parent_id 
    
    SELECT cat_id FROM tp_goods GROUP BY cat_id

    mysql如何實現合并結果集并去除重復值

    然后合并兩個結果集 生成一個新的結果集 (或者可以成為新表)  在 使用DISTINCT  去除合并結果集中的重復值  注意  必須給  新結果集取一個別名  比如例子中的  c

    mysql如何實現合并結果集并去除重復值

    新的查詢結果

    mysql如何實現合并結果集并去除重復值

    此語句為了刪除分類表中   在goods表中不存在的  分類id  且 級別為第二級別  

    mysql如何實現合并結果集并去除重復值

    mysql 合并結果集(union,union all)

    我需要在一個sql的執行結果中,顯示兩個或兩個以上的where條件的結果(select 列的結構相同)。

    考慮使用union,或union all 。

    union 與 union all 執行結果不同

    UNION 刪除重復的記錄再返回結果,即對整個結果集合使用了DISTINCT。結果中無重復數據。

    UNION ALL 將各個結果合并后就返回,不刪除重復記錄。如果結果中有重復數據,則包含重復數據。

    例如,

    mysql> SELECT * FROM world.city where ID=2020 UNION SELECT * FROM world.city where ID=2020;
    +------+-------+-------------+--------------+------------+
    | ID   | Name  | CountryCode | District     | Population |
    +------+-------+-------------+--------------+------------+
    | 2020 | Tieli | CHN         | Heilongjiang |     265683 |
    +------+-------+-------------+--------------+------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM world.city where ID=2020 UNION ALL SELECT * FROM world.city where ID=2020;
    +------+-------+-------------+--------------+------------+
    | ID   | Name  | CountryCode | District     | Population |
    +------+-------+-------------+--------------+------------+
    | 2020 | Tieli | CHN         | Heilongjiang |     265683 |
    | 2020 | Tieli | CHN         | Heilongjiang |     265683 |
    +------+-------+-------------+--------------+------------+
    2 rows in set (0.00 sec)

    對UNION,UNION ALL的結果繼續處理,需要加括號

    比如要對合并后的結果集進行ORDER BY,LIMIT等操作需要對合并對象單個的SELECT語句加上括號。

    并且把整體結果的條件ORDER BY,LIMIT等放到最后一個SELECT的括號后面。

    例如,

    (SELECT * FROM world.city
    WHERE CountryCode = 'JPN' AND Name LIKE 'nishi%') 
    UNION ALL 
    (SELECT * FROM world.city
    WHERE CountryCode = 'CHN' AND Population >= 5000000) 
    LIMIT 5;

    mysql中,UNION,UNION ALL的性能/效率不同

    從效率上說,UNION ALL 要比UNION快很多。

    所以,如果可以確認合并的結果集中不包含重復的數據的話,或者需要的結果中即使包含重復也無所謂,那么就使用UNION ALL。

    UNION

    • UNION在進行表鏈接后會篩選掉重復的記錄,所以在表鏈接后會對所產生的結果集進行排序運算。

    • UNION在運行時先取出各個表/各個select的結果,再用排序空間進行排序刪除重復的記錄,最后返回結果集,如果表數據量大的話可能會導致用磁盤進行排序。

    UNION ALL

    • UNION ALL只是簡單的將結果合并后就返回。不涉及排序運算。

    “mysql如何實現合并結果集并去除重復值”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

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

    AI

    开封县| 安国市| 广灵县| 沧源| 遵义县| 民丰县| 丹凤县| 剑川县| 永州市| 固镇县| 溧阳市| 通渭县| 明水县| 邢台市| 合江县| 阜宁县| 仪陇县| 河北区| 漳浦县| 桑植县| 莆田市| 祁阳县| 色达县| 镇坪县| 河西区| 定兴县| 磐安县| 玉山县| 兰溪市| 木兰县| 繁昌县| 卢龙县| 高雄市| 府谷县| 叙永县| 光泽县| 鸡东县| 盐池县| 浦县| 龙游县| 巴彦淖尔市|