亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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數(shù)據(jù)庫(kù)鎖定機(jī)制詳細(xì)介紹

    Mysql數(shù)據(jù)庫(kù)鎖定機(jī)制詳細(xì)介紹

    這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)鎖定機(jī)制詳細(xì)介紹,本文用大量?jī)?nèi)容講解了Mysql中的鎖定機(jī)制,例如MySQL鎖定機(jī)制簡(jiǎn)介、合理利用鎖機(jī)制優(yōu)化MySQL等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • MySQL日期數(shù)據(jù)類(lèi)型、時(shí)間類(lèi)型使用總結(jié)

    MySQL日期數(shù)據(jù)類(lèi)型、時(shí)間類(lèi)型使用總結(jié)

    MySQL日期數(shù)據(jù)類(lèi)型、MySQL時(shí)間類(lèi)型使用總結(jié),需要的朋友可以參考下。
    2010-06-06
  • MySql 知識(shí)點(diǎn)之事務(wù)、索引、鎖原理與用法解析

    MySql 知識(shí)點(diǎn)之事務(wù)、索引、鎖原理與用法解析

    這篇文章主要介紹了MySql 知識(shí)點(diǎn)之事務(wù)、索引、鎖原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了mysql數(shù)據(jù)庫(kù)事務(wù)、索引、鎖的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • MySQL事務(wù)的四種特性總結(jié)

    MySQL事務(wù)的四種特性總結(jié)

    事務(wù)就是一組DML語(yǔ)句組成,這些語(yǔ)句在邏輯上存在相關(guān)性,這一組DML語(yǔ)句要么全部成功,要么全部失敗,是一個(gè)整體,一個(gè) MySQL 數(shù)據(jù)庫(kù),可不止你一個(gè)事務(wù)在運(yùn)行,所以一個(gè)完整的事務(wù),絕對(duì)不是簡(jiǎn)單的 sql 集合,本文就給大家總結(jié)一下MySQL事務(wù)的四種特性
    2023-08-08
  • 碰到MySQL無(wú)法啟動(dòng)1067錯(cuò)誤問(wèn)題解決方法

    碰到MySQL無(wú)法啟動(dòng)1067錯(cuò)誤問(wèn)題解決方法

    創(chuàng)建primay key過(guò)程中發(fā)生了斷電,當(dāng)電腦再次啟動(dòng)時(shí)候,發(fā)現(xiàn)mysql 服務(wù)無(wú)法啟動(dòng),使用 net start 提示 1067錯(cuò)誤;后來(lái)只能通過(guò)手工刪除數(shù)據(jù)文件,日志文件,再啟動(dòng)服務(wù),然后導(dǎo)入數(shù)據(jù)來(lái)完成
    2013-01-01
  • Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情

    Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情

    這篇文章主要介紹了Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情,Mysql常用的存儲(chǔ)引擎如InnoDB、MyISAM采用的是文件存儲(chǔ),自然和文件系統(tǒng)掛鉤,那么Mysql都有哪些地方用到了文件系統(tǒng)呢,下面我們一起進(jìn)入文章學(xué)習(xí)詳細(xì)內(nèi)容吧
    2022-09-09
  • 講解Linux系統(tǒng)下如何自動(dòng)備份MySQL數(shù)據(jù)的基本教程

    講解Linux系統(tǒng)下如何自動(dòng)備份MySQL數(shù)據(jù)的基本教程

    這篇文章主要介紹了Linux系統(tǒng)下如何自動(dòng)備份MySQL數(shù)據(jù)的基本教程,還給出了利用shell腳本全備份和增量備份的基本方法,需要的朋友可以參考下
    2015-11-11
  • 詳解如何避免MYSQL主從延遲帶來(lái)的讀寫(xiě)問(wèn)題

    詳解如何避免MYSQL主從延遲帶來(lái)的讀寫(xiě)問(wèn)題

    當(dāng)在主庫(kù)上進(jìn)行更新后,有可能數(shù)據(jù)還沒(méi)來(lái)得及同步到從庫(kù),但是這個(gè)時(shí)候又有讀數(shù)據(jù)的需求,為了能正確讀取出數(shù)據(jù),這個(gè)時(shí)候就只有讀主庫(kù)了,所以本文給大家介紹了如何避免MYSQL主從延遲帶來(lái)的讀寫(xiě)問(wèn)題,需要的朋友可以參考下
    2024-03-03
  • 詳解Mysql 游標(biāo)的用法及其作用

    詳解Mysql 游標(biāo)的用法及其作用

    這篇文章主要介紹了Mysql 游標(biāo)的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-09-09
  • 基于MYSQL中優(yōu)化的一些方法

    基于MYSQL中優(yōu)化的一些方法

    本篇文章是對(duì)MYSQL中優(yōu)化的一些方法進(jìn)行了詳細(xì)的介紹,需要的朋友參考下
    2013-05-05

最新評(píng)論