色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

mysql - SQL識別兩張表不同數(shù)據(jù)

瀏覽:113日期:2022-06-13 09:00:19

問題描述

有兩張1W行左右的表,需要查詢有差異的行,現(xiàn)在的代碼如下:

SELECT number, versionFROM ( SELECT a.number, b.version FROM a UNION ALL SELECT b.number, b.version FROM b) tbGROUP BY number, versionHAVING COUNT(*) = 1ORDER BY number

但是問題來了,以上代碼只能查詢出不同的行,但是沒法顯示a表中有的b表中沒有的,b表中有的a表中沒有的,有沒有辦法可以在第3列標(biāo)識出來?

問題解答

回答1:

按樓主意思,單表中number和version是不會重復(fù)的,兩張表的number和version建一個復(fù)合索引,然后執(zhí)行以下sql

SELECT a.number, a.version,’from_a’FROM awhere not exists (SELECT 1 FROM b where a.number=b.number and a.version=b.version)union allSELECT b.number, b.version,’from_b’FROM bwhere not exists (SELECT 1 FROM a where a.number=b.number and a.version=b.version)ORDER BY number;或者SELECT a.number, a.version,’from_a’from a left join b on a.number=b.number and a.version=b.versionwhere b.id is nullunion allSELECT b.number, b.version,’from_b’from a right join b on a.number=b.number and a.version=b.versionwhere a.id is nullORDER BY number;下面這個效率可能會差點回答2:

試試full join ... where a is null or b is null。比如用Postgres:

select case when a.n is null then b.n else a.n end as n, case when a.n is null then b.v else a.v end as v, case when a.n is null then ’b’ else ’a’ end as srcfrom (values(1, 2), (2, 3), (3, 4)) as a(n, v) full join (values(6, 7), (2, 3), (3, 9)) as b(n, v) using (n, v)where a.n is null or b.n is null

結(jié)果:

n | v | src---+---+----- 1 | 2 | a 3 | 4 | a 3 | 9 | b 6 | 7 | b(4 行記錄)

相關(guān)文章:
主站蜘蛛池模板: 亚洲天堂2016 | 久久久久久免费播放一级毛片 | 亚洲免费精品视频 | 国产三级精品三级国产 | 成人国产亚洲欧美成人综合网 | 国产精品欧美日韩 | 亚洲国产美女视频 | 成人a视频在线观看 | 毛片一级| 免费中文字幕一级毛片 | 国产亚洲精品激情一区二区三区 | 国内精品久久久久久中文字幕 | 九九精品免费 | 中文一区在线观看 | 在线欧洲成人免费视频 | 99视频在线精品免费观看18 | 三级黄毛片 | 久色成人 | 91精品一区二区三区在线 | 国产一级一级一级国产片 | 2018av男人天堂 | 黄大片日本一级在线a | 国产成人丝袜视频在线视频 | 国产网站免费 | 国产成人精品男人的天堂网站 | 在线亚视频 | 台湾精品视频在线观看 | 黄色毛片视频校园交易 | 久草在线视频网站 | 久久综合狠狠综合狠狠 | 成年人视频在线免费 | 久久无码av三级 | 精品国产呦系列在线看 | 国外免费一级 | 香蕉久久夜色精品国产尤物 | 国产成人精品亚洲一区 | 成人在线第一页 | 国产一区二区三区手机在线观看 | 久草视频中文在线 | 中文字幕第9页 | 黄a网站 |