日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle/mysql联合查询union、union all

發布時間:2025/3/8 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle/mysql联合查询union、union all 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

若無特殊說明,oracle與mysql均適用

  • 使用場景

union、union all關鍵字用戶將兩個select查詢結果集合并成一個結果集,例如:一個舊系統使用a表,同樣的信息但是新系統使用了b表,這時候可以使用union或者union all關鍵字將舊系統和新系統的數據合并顯示。

  • union和union all的相同點和不同點

  • 相同點:都是對兩個查詢結果集進行并集操作。
  • 不同點:union會合并重復的行,而union all則不會,所謂重復行即兩行數據所有的查詢字段都相同。
  • union all先跟左邊的查詢結果,然后再跟右邊的查詢結果。在oracle中union是全量排序,所謂全量排序即先按照第一個字段排序,然后按照第二個字段排序,依次類推。而在mysql中union先跟左邊的查詢結果,然后再跟右邊的查詢結果
    • 使用需要注意點

  • 如果不想使用默認的全量排序,可以在sql語句末尾使用order by+數字(排序字段的位置),mysql還可以使用order by+字段的方式
  • 關鍵字兩邊查詢的字段要完全一樣
    • 擴展補充(mysql不支持)

  • Intersect:取兩個結果集的交集,和并重復行。
  • Minus:取兩個結果集的差集,即在第一個查詢結果中包含,并且在第二個查詢結果中不包含的數據,合并重復行。
    • DEMO

    create table student_a( id number, name varchar2(100));create table student_b( id number, name varchar2(100));insert into STUDENT_A (id, name) values (1, '張三'); insert into STUDENT_A (id, name) values (2, '李四'); insert into STUDENT_A (id, name) values (1, '張三'); commit;insert into STUDENT_B (id, name) values (2, '李四'); insert into STUDENT_B (id, name) values (3, '趙六'); commit;select id,name from student_a union select id,name from student_b ;select id,name from student_a union all select id,name from student_b ;select id,name from student_a Intersect select id,name from student_b ;select id,name from student_a Minus select id,name from student_b ;select id,name from student_a union all select id,name from student_b order by 1;

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Oracle/mysql联合查询union、union all的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。