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

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

 更新時(shí)間:2022年05月18日 14:34:09   作者:了毒蛇粉的貓  
有時(shí)候正式庫(kù)和測(cè)試庫(kù)同一個(gè)表有字段有差異,會(huì)造成各種錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于SQL多表多字段比對(duì)方法的相關(guān)資料,文中通過(guò)實(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種查詢(xún)結(jié)果相同

-- 寫(xiě)法01
SELECT COUNT(1) FROM (
SELECT DISTINCT ID,`NAME` FROM A
) T1;
-- 寫(xiě)法02
SELECT COUNT(1) FROM (
SELECT DISTINCT ID,`NAME` FROM B
) T2;
-- 寫(xiě)法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種寫(xiě)法結(jié)果一樣
-- 寫(xiě)法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);
-- 寫(xiě)法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è)字段間一對(duì)多或多對(duì)一的關(guān)系

測(cè)試id與name的一對(duì)多關(guān)系以下SQL會(huì)報(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;

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

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

證明id字段不是主鍵

  • 下面2種寫(xiě)法結(jié)果一樣
-- 寫(xiě)法01
SELECT ID
FROM A
GROUP BY ID
HAVING COUNT(*)>1;
-- 寫(xiě)法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號(hào)'       -- 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多表多字段比對(duì)方法的文章就介紹到這了,更多相關(guān)SQL多表多字段比對(duì)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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存儲(chǔ)過(guò)程詳解

    mysql存儲(chǔ)過(guò)程詳解

    我們常用的操作數(shù)據(jù)庫(kù)語(yǔ)言SQL語(yǔ)句在執(zhí)行的時(shí)候需要要先編譯,然后執(zhí)行,而存儲(chǔ)過(guò)程(Stored Procedure)是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給定參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)調(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查詢(xún)或?qū)С鼋Y(jié)果添加序號(hào)字段實(shí)現(xiàn)方法

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

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

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

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

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

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

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

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

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

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

    MySQL表鎖定問(wèn)題的原因、檢測(cè)與解決方案

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

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

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

最新評(píng)論

巩义市| 托克托县| 葫芦岛市| 塔河县| 拜城县| 西乌珠穆沁旗| 南和县| 壤塘县| 武冈市| 古田县| 泾川县| 乾安县| 漠河县| 通榆县| 兰溪市| 镇康县| 扎囊县| 廉江市| 新田县| 上饶县| 喀什市| 海门市| 治多县| 黑水县| 卓资县| 仙居县| 林甸县| 象山县| 大渡口区| 西丰县| 博罗县| 龙州县| 罗平县| 彝良县| 潞西市| 佛冈县| 铜陵市| 万山特区| 固原市| 汉阴县| 信阳市|