最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQL多表多字段比對方法實(shí)例代碼

 更新時(shí)間:2022年05月18日 14:34:09   作者:了毒蛇粉的貓  
有時(shí)候正式庫和測試庫同一個(gè)表有字段有差異,會造成各種錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于SQL多表多字段比對方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

表-表比較

整體思路

  • 兩張表?xiàng)l數(shù)一樣
    • 條數(shù)相同是前提,然后比較字段值才有意義
  • 兩表字段值完全相同【兩表所有字段的值相同】
    • 兩表所有字段union后,條數(shù)與另一張表?xiàng)l數(shù)一樣
  • 兩表字段值部分相同【兩表部分字段的值相同】
    • 原理:union有去重功能
    • 兩表部分字段union后,條數(shù)與另一張的count(distinct 部分字段)一樣
  • 找出不同字段的明細(xì)

找出不同字段的明細(xì)

T1/T2兩表ID相同的部分,是否存在不同NAME

SELECT T1.ID,T2.ID,T1.`NAME`,T2.`NAME`
FROM A T1
LEFT JOIN B T2
ON T1.ID = T2.ID
AND COALESCE(T1.ID,'') <> ''
AND COALESCE(T2.ID,'') <> ''
WHERE T1.`NAME` <> T2.`NAME`;

兩表的交集與差集:判斷兩表某些字段是否相同

判斷兩表某些字段是否相同,3種查詢結(jié)果相同

-- 寫法01
SELECT COUNT(1) FROM (
SELECT DISTINCT ID,`NAME` FROM A
) T1;
-- 寫法02
SELECT COUNT(1) FROM (
SELECT DISTINCT ID,`NAME` FROM B
) T2;
-- 寫法03
SELECT COUNT(1) FROM (
SELECT DISTINCT ID,`NAME` FROM A
UNION
SELECT DISTINCT ID,`NAME` FROM B
) T0;

not in與exists

兩表的交集與差集:找出T2表獨(dú)有的id

找出只存在于T2,不在T1中的那些id

  • 下面2種寫法結(jié)果一樣
-- 寫法01
SELECT T2.`NAME`,T2.* FROM A T2 WHERE  T2.`NAME` IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM B T1 WHERE T1.ID = T2.ID);
-- 寫法02
SELECT T2.`NAME`,T2.* FROM A T2 WHERE  T2.`NAME` IS NOT NULL
AND T2.ID NOT IN (SELECT T1.ID FROM B T1 );

字段-字段比較

判斷兩個(gè)字段間一對多或多對一的關(guān)系

測試id與name的一對多關(guān)系以下SQL會報(bào)錯(cuò),報(bào)錯(cuò)原因 GROUP BY

SELECT ID,`NAME`,COUNT(*)
FROM A
GROUP BY ID
HAVING COUNT(`NAME`)>1;

修改后:

SELECT ID, COUNT(DISTINCT `NAME`)
FROM A
GROUP BY ID
HAVING COUNT(DISTINCT `NAME`)>1;

這樣就說明id與name是一對多的關(guān)系

擴(kuò)展:多對多關(guān)系,上述SQL中id與name位置互換后,查詢有值,就說明兩者是多對多關(guān)系

證明id字段不是主鍵

  • 下面2種寫法結(jié)果一樣
-- 寫法01
SELECT ID
FROM A
GROUP BY ID
HAVING COUNT(*)>1;
-- 寫法02
SELECT ID,COUNT(ID)
FROM A
GROUP BY ID
HAVING COUNT(ID)>1;

證明id, name字段不是聯(lián)合主鍵

SELECT ID,`NAME`
FROM A
GROUP BY ID,`NAME`
HAVING COUNT(*)>1
ORDER BY ID;

數(shù)據(jù)準(zhǔn)備

-- 建表
CREATE TABLE IF NOT EXISTS TEST01.A
(
     ID                      VARCHAR(50)               COMMENT 'ID號'       -- 01
    ,NUMS                    INT                       COMMENT '數(shù)字'       -- 02
    ,NAME                    VARCHAR(50)               COMMENT '名字'       -- 03

)
COMMENT 'A表'
STORED AS PARQUET
;

-- 插數(shù)
INSERT INTO TEST01.A (ID,NUMS,NAME) VALUES ('01',1,NULL);
INSERT INTO TEST01.A (ID,NUMS,NAME) VALUES ('02',2,'');
INSERT INTO TEST01.A (ID,NUMS,NAME) VALUES ('03',3,'c');

-- 刪數(shù)
DELETE FROM TEST01.A WHERE ID = '04';
-- 刪表
DROP TABLE IF EXISTS TEST01.A;

總結(jié) 

到此這篇關(guān)于SQL多表多字段比對方法的文章就介紹到這了,更多相關(guān)SQL多表多字段比對內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 5.7.23 winx64解壓版安裝教程

    mysql 5.7.23 winx64解壓版安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.23 winx64解壓版安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • mysql存儲過程詳解

    mysql存儲過程詳解

    我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時(shí)候需要要先編譯,然后執(zhí)行,而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給定參數(shù)(如果該存儲過程帶有參數(shù))來調(diào)用執(zhí)行它
    2012-07-07
  • MySQL Slave 觸發(fā) oom-killer解決方法

    MySQL Slave 觸發(fā) oom-killer解決方法

    這篇文章主要介紹了MySQL Slave 觸發(fā) oom-killer解決方法,需要的朋友可以參考下
    2016-07-07
  • Mysql查詢或?qū)С鼋Y(jié)果添加序號字段實(shí)現(xiàn)方法

    Mysql查詢或?qū)С鼋Y(jié)果添加序號字段實(shí)現(xiàn)方法

    這篇文章主要介紹了Mysql查詢或?qū)С鼋Y(jié)果添加序號字段實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解

    Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解

    這篇文章主要介紹了Mysql事務(wù)并發(fā)臟讀+不可重復(fù)讀+幻讀詳解,文章基于Mysql事務(wù)的相關(guān)資料展開對主題的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • MySQL事務(wù)的隔離級別詳情

    MySQL事務(wù)的隔離級別詳情

    這篇文章主要介紹了MySQL事務(wù)的隔離級別詳情,事務(wù)隔離級別越高,為避免沖突所花費(fèi)的性能也就越多,即效率低。在“可重復(fù)讀”級別,實(shí)際上可以解決部分的虛讀問題,但是不能防止update更新產(chǎn)生的虛讀問題,要禁止虛讀產(chǎn)生,還是需要設(shè)置串行化隔離級別
    2022-07-07
  • 一文詳解MySQL—Join的使用優(yōu)化

    一文詳解MySQL—Join的使用優(yōu)化

    JOIN是一種非常常見的操作,用于將兩個(gè)或多個(gè)表中的數(shù)據(jù)合并到一個(gè)結(jié)果集中。MySQL支持多種JOIN類型,本文通過代碼示例詳細(xì)介紹了Join的使用優(yōu)化,有需要的小伙伴可以參考閱讀
    2023-04-04
  • MySQL數(shù)據(jù)庫如何克隆(帶腳本)

    MySQL數(shù)據(jù)庫如何克隆(帶腳本)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫如何克隆(帶腳本)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • MySQL表鎖定問題的原因、檢測與解決方案

    MySQL表鎖定問題的原因、檢測與解決方案

    在數(shù)據(jù)庫管理系統(tǒng)中,鎖是保證數(shù)據(jù)一致性和事務(wù)隔離性的重要機(jī)制,然而,鎖的使用也可能導(dǎo)致性能問題,尤其是在高并發(fā)場景下,表鎖定(Table Locking)可能會成為系統(tǒng)的瓶頸,本文將深入探討MySQL中表鎖定的原因、如何檢測表鎖定問題,并提供有效的解決方案
    2025-01-01
  • MySQL MaxCompute與AnalyticDB實(shí)現(xiàn)數(shù)據(jù)處理與轉(zhuǎn)換過程詳解

    MySQL MaxCompute與AnalyticDB實(shí)現(xiàn)數(shù)據(jù)處理與轉(zhuǎn)換過程詳解

    AnalyticDB MySQL(簡稱ads)與 MaxCompute(簡稱odps)進(jìn)行數(shù)據(jù)轉(zhuǎn)換時(shí),個(gè)別語法有差別,記錄下來,方便備查,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12

最新評論

洛浦县| 清水县| 东海县| 东安县| 界首市| 旬阳县| 夏邑县| 康平县| 南丹县| 辽宁省| 望城县| 贵州省| 柳河县| 四川省| 神木县| 永定县| 鱼台县| 遵义市| 邢台县| 舒城县| 双江| 乌拉特中旗| 普格县| 梧州市| 万州区| 社旗县| 陵川县| 玉溪市| 桐乡市| 仁布县| 上思县| 垣曲县| 九龙坡区| 凤城市| 大荔县| 洪泽县| 大竹县| 交口县| 正阳县| 嘉义市| 明光市|