sql怎么比較兩個(gè)表字段的內(nèi)容(sql 兩個(gè)表比較)

    本文主要介紹sql如何比較兩個(gè)表字段的內(nèi)容(sql兩表比較),下面一起看看sql如何比較兩個(gè)表字段的內(nèi)容(sql兩表比較)相關(guān)資訊。
    一開始我們碰到一個(gè)sql查詢需要的項(xiàng)目,里面有兩個(gè)結(jié)構(gòu)相同的表(table_left table_right),如圖1所示。每組檢查(groupid) table_left,是否有一組(groupid)data (data)table _ right(data)是完全相同的data(data)。你可以看到在圖1中,table_left和table_right中有兩組完全相同的數(shù)據(jù):圖2。從上面兩張表分析,我們可以知道它們存儲(chǔ)了一組數(shù)據(jù)。然后,用枚舉法和數(shù)算來分析。一組枚舉用于描述兩個(gè)表中的每個(gè)數(shù)據(jù)。圖3。只有兩種情況,平等和不平等。對(duì)于不平等,可以分為部分平等、包容和完全不平等。使用set description,您可以使用交集的子集,如圖4所示。下面,我列出了這些常見的情況:圖4。有很多方法可以找到一組數(shù)據(jù)表table_left和table table_right相同的表。這里我列舉了兩種最常用的方法。(以下sql腳本基于圖4中的數(shù)據(jù))。方法1:選擇xml路徑( )列中的數(shù)據(jù)綁定到# 11組data1-data2-data3table_left)和另一組(table_right)中的數(shù)據(jù)序列然后通過比較兩個(gè)表,一系列字段相等,也就是說如果兩個(gè)數(shù)據(jù)相同的集合相等,就可以確定這個(gè)數(shù)據(jù)完全相等的表table_right和它的組數(shù)據(jù)表table_left table。方法1,您需要將字段的數(shù)據(jù)路徑添加到存儲(chǔ)在原始表中的數(shù)據(jù)列的數(shù)據(jù)序列中。結(jié)果如下:復(fù)制代碼如下:修改表添加數(shù)據(jù)路徑table_left nvarchar(200)修改表添加table_right nvarchar(200)組的一系列數(shù)據(jù)列的數(shù)據(jù)路徑更新新添加列的數(shù)據(jù)路徑。比如復(fù)制代碼如下:更新并設(shè)置data path = b . data path from table _ left-cross應(yīng)用(select(-x . data from table _ left x in x . groupid = a . groupid order))更新并設(shè)置data path = b . data path from table _ right-cross應(yīng)用(select(-x . data from table _ right x in x。groupid = a.groupid order))后跟查詢例如復(fù)制代碼如下:從table_left中選擇不同的a . groupid(select 1 table _ right x in x . data path = a . data path)完整代碼:復(fù)制代碼如下:使用tempdb檢查代碼如果object _ id( ;table_left)不是空表ta。ble_left如果object _ id( ;表_右 )不是空表table_right,創(chuàng)建一個(gè)表table_left(groupid nvarchar(5),data nvarchar(10))并創(chuàng)建一個(gè)表table_right(groupid nvarchar(5))。data nvarchar(10))修改表并添加數(shù)據(jù)路徑table_left nvarchar(200)修改表并添加數(shù)據(jù)路徑table_right nvarchar(200)創(chuàng)建非聚集索引ix_left table_left (path)和非聚集索引ix_right table_right (path)。轉(zhuǎn)到set nocount on以插入table_right(groupid,data)選擇# 1。;數(shù)據(jù)1聯(lián)合所有選擇# 1。;數(shù)據(jù)2聯(lián)合所有選擇# 1。;數(shù)據(jù)3聯(lián)合所有選擇# 2。;數(shù)據(jù)55聯(lián)合所有選擇# 2。;數(shù)據(jù)55工會(huì)所有選擇# 3,數(shù)據(jù)91工會(huì)所有選擇# 3。;數(shù)據(jù)92工會(huì)的所有選擇# 4,及。;數(shù)據(jù)65工會(huì)所有選擇# 4,及。;數(shù)據(jù)67工會(huì)所有選擇# 4,及。;數(shù)據(jù)68工會(huì)的所有選擇# 4,及。;data69工會(huì)所有選擇# 5 ;數(shù)據(jù)77工會(huì)所有選擇# 5,數(shù)據(jù)79插入表_左(數(shù)據(jù))選擇# 11, 數(shù)據(jù)1聯(lián)合所有選擇# 11。;數(shù)據(jù)2聯(lián)合所有選擇# 11。;數(shù)據(jù)3聯(lián)合所有選擇# 22;;數(shù)據(jù)55聯(lián)合所有選擇# 22,及。;data57 union all選擇# 33,data99 union all選項(xiàng)# 33。;data99 union所有選項(xiàng)# 44;;data66 union所有選項(xiàng)# 44;;data68 union所有選項(xiàng)# 55;;數(shù)據(jù)77聯(lián)合所有選項(xiàng)# 55;;data78 union所有選項(xiàng)# 55;;data79更新設(shè)置data path = b . data path from table_left to cross application(select(select-x . data from table _ left x in x . groupid = a . groupid order))更新設(shè)置data path = b . data path from table _ right to cross application(select(select(select(select-x . data from table _ right x in x . groupid order))——從table _ left中選擇不同的a . groupid(select 1 table _ right x in x . data path = a . data path)方法二:設(shè)置運(yùn)算符判斷如果另一組沒有不重復(fù)的數(shù)據(jù),則表明這兩組數(shù)據(jù)是完整的。例如,在table_left和table _ right groups 11 groups # #數(shù)據(jù)中,除了操作列之外,這是(# 11,# 1)除了設(shè)置操作(# 1,# 11)或除法操作,并且返回空結(jié)果,表明數(shù)據(jù)集# 1和# 11完全相同。比如復(fù)制代碼如下:select數(shù)據(jù)來源于table _ left groupid = # 11 除了select where data table _ right select where data table _ right groupid = # 1 ;除了以同樣的選擇數(shù)據(jù)表_left所在的位置。我們使用11個(gè)組# table_right table_left和組# 2來執(zhí)行除集合操作之外的列數(shù)據(jù)。比如復(fù)制代碼如下:select數(shù)據(jù)來源于table _ left groupid = # 11 除了選擇數(shù)據(jù)來自table _ right groupid = # 2 除了select數(shù)據(jù)來源于table_left long作為(# 11,# 2)或(2 #,11)的記錄被分割外,兩組數(shù)據(jù)是不相等的。比較兩個(gè)表的所有組,需要實(shí)現(xiàn)以下sql腳本,比如:復(fù)制代碼如下:選擇不同的a.groupid加入table _ right b . data = a . data from table _ left。如果不存在(select x,table_left x.groupid = a.groupid不存在除了選中的數(shù)據(jù)(select x,table_right x.groupid = b.groupid除了選中的數(shù)據(jù))完整代碼:復(fù)雜。系統(tǒng)代碼如下:檢查使用tempdb創(chuàng)建表table _ left(groupid nvarchar(5))if object _ id( ;table_left)不是空表table _ left。data nvarchar(10))創(chuàng)建table_right(groupid nvarchar(5),data nvarchar(10))創(chuàng)建非聚集索引ix_left table_left (data)創(chuàng)建非聚集索引ix_right table_right (data)設(shè)置nocount on以插入table_right(groupid,data)選擇# 1, 數(shù)據(jù)1工會(huì)所有選擇# 1,數(shù)據(jù)2工會(huì)所有選擇# 1。;數(shù)據(jù)3工會(huì)所有選擇# 2。;data55工會(huì)所有選擇# 2 ;數(shù)據(jù)55工會(huì)的所有選擇# 3。;數(shù)據(jù)91工會(huì)所有選擇# 3,及。;數(shù)據(jù)92工會(huì)的所有選擇# 4,及。;數(shù)據(jù)65工會(huì)所有選擇# 4,數(shù)據(jù)67工會(huì)所有選擇# 4。;數(shù)據(jù)68聯(lián)盟所有選擇# 4,及。;數(shù)據(jù)69聯(lián)盟所有選擇# 5,及。;數(shù)據(jù)77聯(lián)合所有選擇# 5。;data79 insert table_left(groupid,data)選擇# 11。;數(shù)據(jù)1聯(lián)合所有選擇# 11。;數(shù)據(jù)2聯(lián)合所有選擇# 11,數(shù)據(jù)3聯(lián)合所有選擇# 22。;數(shù)據(jù)55聯(lián)合所有選擇# 22,及。;數(shù)據(jù)57聯(lián)合所有選擇# 33,及。;data99 union all choic——選擇不同的a.groupid,并聯(lián)接table_right b b.data = a .數(shù)據(jù)不存在(select x,table_left x.groupid = a.groupid除所選數(shù)據(jù)外不存在(select x,table_right x.groupid = b.groupid除所選數(shù)據(jù)外)方法1 vs方法2:方法1和方法2找到組# 11的table_left,這是完全相同的數(shù)據(jù)表。就table_right.but性能而言,這兩個(gè)方法在執(zhí)行上述trip期間可以看到它們比方法1好。統(tǒng)計(jì):方法1:圖5。方法二:圖6。如果數(shù)據(jù)量很大,那么方法2比方法1有更明顯的優(yōu)勢(shì)。因?yàn)?、兩部分更新的數(shù)據(jù)路徑,數(shù)據(jù)量的增加,位置更新在這里消耗了大量的資源;如果數(shù)據(jù)列的數(shù)據(jù)大小超過900字節(jié),則無法在數(shù)據(jù)路徑中創(chuàng)建索引,這將影響選擇性查詢的性能。這里的延伸就是延伸,主要針對(duì)上面的方法2。當(dāng)一列中的數(shù)據(jù)大小超過900字節(jié),或者有多個(gè)數(shù)據(jù)列時(shí),我們需要比較兩列(groupid)。圖7。在這種情況下,可以為現(xiàn)場(chǎng)datasub1 datasub2創(chuàng)建哈希索引,例如:復(fù)制代碼如下:修改table_left將datachecksum添加為校驗(yàn)和(datasub1,datasub2)修改table_right將datachecksum添加為校驗(yàn)和(datasub1,datasub2)創(chuàng)建非聚集索引ix_table_left_cs在table_right中創(chuàng)建非聚集索引(data checksum)table _ right(data checksum)下的select語(yǔ)句可以在內(nèi)部連接部分稍作修改。比如復(fù)制代碼如下:選擇不同的a.groupid加入table _ right bb。datachecksum = a. datachecksum和b.datasub1 = a.datasub1和b.datasub2 = a.datasub2來自table_left(從table _ left x in x . groupid = a . groupid,where,x.datasub2中選擇x.d. atasub1,x.datasub2)。不存在(從x.groupid = b.groupid中的table_right x中選擇x.datasub1,x.datasub2,其中,x.datasub2)。完整代碼:復(fù)制代碼如下:檢查代碼使用tempdb創(chuàng)建表table _ left(groupid)if object _ id( ;如果object _ id( ;table_right)不為空。nvarchar(5),datasub1 nvarchar(10),datasub2 nvarchar(10))創(chuàng)建表table_right(groupid nvarchar(5),datasub1 nvarchar(10),datasub2nnvarchar (10))修改table_left并添加數(shù)據(jù)校驗(yàn)和作為校驗(yàn)和(datasub1,datasub2)修改table_right并添加數(shù)據(jù)校驗(yàn)和作為校驗(yàn)和(datasub1,datasub2)創(chuàng)建非聚集索引ix_table_left_cs在table_left中創(chuàng)建非聚集索引table_right_cs;數(shù)據(jù) , 數(shù)據(jù) 聯(lián)合所有選擇# 1。;數(shù)據(jù) , 數(shù)據(jù)8和。;聯(lián)合所有選擇# 1。;數(shù)據(jù) , 數(shù)據(jù)9和。;聯(lián)合所有選擇# 2。;數(shù)據(jù) , 數(shù)據(jù) 聯(lián)合所有選擇# 2,數(shù)據(jù) , 數(shù)據(jù) insert table_left(groupid,datasub1,datasub2),select # 11,數(shù)據(jù) , 數(shù)據(jù) 聯(lián)合所有選擇# 11。;數(shù)據(jù) , 數(shù)據(jù)8和。;聯(lián)合所有選擇# 11。;數(shù)據(jù) ,數(shù)據(jù) 聯(lián)合所有選擇# 22。;數(shù)據(jù) , 數(shù)據(jù)0和。;聯(lián)合所有選擇# 22。;數(shù)據(jù) , 數(shù)據(jù) 聯(lián)合所有選擇# 33。;數(shù)據(jù)99和。;, 數(shù)據(jù) 聯(lián)合所有選擇# 33。;數(shù)據(jù)99和。;,去——選擇不同的a.groupid加入table _ right bb。datachecksum = a. datachecksum和b. data6b1 = a. datasub1和b . datasub 2 = a . datasu from table _ left。b2不存在(select x.datasub1,x . datasub 2 from table _ left x in x . groupid =a.groupid,其中,x.datasub2)。不存在(從x.groupid = b.groupid中的table_right x中選擇x.datasub1,x.datasub2,其中,x.datasub2)。綜上所述,可能有其他更好的方法來解決這個(gè)問題。此外,實(shí)際生產(chǎn)環(huán)境可能會(huì)有所不同。無論如何,我們需要更多的分析,更多的實(shí)驗(yàn),更多的實(shí)驗(yàn)來找到最佳的解決方案。
    了解更多sql如何比較兩個(gè)表字段的內(nèi)容(sql兩表比較)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。

    mx5怎么不用匯頂?shù)闹讣y,魅族mx5怎么設(shè)置指紋支付
    聯(lián)想電腦不開機(jī)黑屏
    電腦無線鼠標(biāo)不能用怎么回事(電腦連上無線鼠標(biāo)但不能用怎么辦)
    機(jī)械硬盤不識(shí)別了如何修復(fù)呢
    組裝臺(tái)式電腦配置清單2020,組裝臺(tái)式電腦配置清單
    sql怎么比較兩個(gè)表字段的內(nèi)容(sql 兩個(gè)表比較)
    華為電腦怎么看配置,電腦怎么看配置像手機(jī)一樣嗎分成幾核或者運(yùn)行內(nèi)存多大
    7000左右的游戲筆記本推薦(7000游戲本)
    惠普和七彩虹的固態(tài)硬盤,京東自營(yíng)300元以內(nèi)120G固態(tài)硬盤哪個(gè)好呢
    電腦連家里wifi怎么連(臺(tái)式電腦怎么連自家的wifi)
    華為nova手機(jī)如何錄屏幕(華為nove手機(jī)錄屏怎么操作)
    sd卡受損怎么修復(fù)不讓數(shù)據(jù)丟失(如果sd卡受損怎么辦)
    1280-960壁紙(1920-1280壁紙)
    移動(dòng)硬盤不想格式化如何修復(fù)
    手機(jī)開機(jī)密碼忘記了怎么解鎖,手機(jī)開機(jī)密碼忘了怎么辦
    怎么看筆記本硬盤是固態(tài)還是機(jī)械,筆記本硬盤固態(tài)和機(jī)械哪個(gè)好
    筆記本屏幕169和1610的區(qū)別(1610的筆記本屏幕)
    電腦顯卡起什么作用,顯卡的主要作用是什么
    魅族怎么退款,魅族商城退款要多久
    蘋果手表可以連安卓機(jī)嗎(蘋果watch手表可以連接安卓手機(jī)嗎)
    主站蜘蛛池模板: 日本韩国一区二区三区| 激情综合一区二区三区| 日本高清不卡一区| 精品无码综合一区二区三区| 无码囯产精品一区二区免费 | 香蕉在线精品一区二区| 无码夜色一区二区三区| 亚欧在线精品免费观看一区| 中文无码AV一区二区三区| 国产在线精品一区在线观看| 无码少妇一区二区浪潮免费| 天堂va在线高清一区| 蜜桃无码AV一区二区| 久久精品免费一区二区| 人体内射精一区二区三区| 国产无线乱码一区二三区| 国产在线精品一区二区不卡麻豆| 国产精品一区二区资源| 国产日韩精品一区二区在线观看播放| 韩国福利一区二区美女视频| 精品无人区一区二区三区在线| 亚州日本乱码一区二区三区| 精品一区二区三区在线视频| 福利一区二区三区视频在线观看 | 亚州AV综合色区无码一区| 亚洲一区二区三区免费观看| 亚洲av无码片区一区二区三区| 精品一区二区三区东京热| 91久久精品午夜一区二区| 97一区二区三区四区久久| 深田咏美AV一区二区三区| 日本香蕉一区二区三区| 国产成人精品久久一区二区三区av | 亚洲高清日韩精品第一区| 日韩精品无码一区二区三区| 日韩免费一区二区三区在线播放 | 中文字幕一区二区人妻| 老熟妇仑乱视频一区二区| 麻豆精品人妻一区二区三区蜜桃| 午夜DV内射一区区| 波多野结衣高清一区二区三区|