欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql使用left?join連接出現(xiàn)重復問題的記錄

 更新時間:2023年03月23日 09:07:53   作者:Fighter168  
這篇文章主要介紹了mysql使用left?join連接出現(xiàn)重復問題的記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mysql使用left join連接出現(xiàn)重復

問題描述

在使用連接查詢的時候,例如以A表為主表,左連接B表,我們期望的是A表有多少條記錄,查詢結果就有多少條記錄,但是可能會出現(xiàn)這樣的結果,就是查詢出來的記錄總條數(shù),多余A表的記錄總條數(shù),并且是查詢的結果顯示出來時有部分列是重復的,簡單的說,就是產(chǎn)生了笛卡爾積。

問題示例

其中A表是用戶表(user),字段分別是:

ID name userid
1 aaaa 10001
2 bbbb 10002
3 ccccc 10003

B表是第一類產(chǎn)品表(product),字段分別是:

ID title time userid
1 標題1 2014-01-01 10002
2 標題2 2014-01-01 10002
3 標題3 2014-01-01 10001
4 標題4 2018-03-20 10002
5 標題5 2018-03-20 10003

這個時候我們使用下面sql 執(zhí)行的時候發(fā)現(xiàn)

selecct * from user left join product on user.userid=product.userid;

執(zhí)行結果竟然比user表的總數(shù)記錄多

問題解決

其實這個問題明眼人一眼就看出來了,因為left join的關鍵字在product表不唯一,所以這部分不唯一的數(shù)據(jù)就產(chǎn)生了笛卡爾積,導致執(zhí)行結果多于預期結果。

解決的辦法就是采用唯一鍵去關聯(lián)做鏈接查詢就可以了

mysql使用left join時,右表數(shù)據(jù)有重復數(shù)據(jù)

LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。 此時右表 (table_name2)右表有通過 on 關鍵字過濾后沒有數(shù)據(jù)或只有一條數(shù)據(jù)時是沒有問題的。

我要說的是如果右表 (table_name2)出現(xiàn)重復數(shù)據(jù)(業(yè)務上完全重復)該怎么處理。

當右表 (table_name2)通過 on 關鍵字過濾后出現(xiàn)重復數(shù)據(jù),此時查出的數(shù)據(jù)就會是,右表數(shù)據(jù)*重復的數(shù)據(jù)+右表其他條件數(shù)據(jù),和我們所需數(shù)據(jù)的條數(shù)不同。

我的解決方法是,先根據(jù)過濾字段分組查詢一次右表 (table_name2),把相同的數(shù)據(jù)過濾掉,然后把這個結果當成右表在進行關聯(lián)

前面腦補?
LEFT JOIN (SELECT MODEL_CODE,MODEL_NAME from tm_model GROUP BY MODEL_CODE) tm on tav.model_code = tm.MODEL_CODE?
后面腦補

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL自動為查詢數(shù)據(jù)結果加序號

    MySQL自動為查詢數(shù)據(jù)結果加序號

    這篇文章主要給大家介紹了關于MYSQL如何自動為查詢數(shù)據(jù)的結果編上序號的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧
    2022-12-12
  • 詳解MySQL中varchar和int隱式轉換的注意事項

    詳解MySQL中varchar和int隱式轉換的注意事項

    這篇文章主要為大家詳細介紹了MySQL中varchar和int隱式轉換的注意事項,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • MySQL 大表添加一列的實現(xiàn)

    MySQL 大表添加一列的實現(xiàn)

    這篇文章主要介紹了MySQL 大表添加一列的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 詳細解讀MySQL中的權限

    詳細解讀MySQL中的權限

    這篇文章主要介紹了MySQL中的權限,包括各個權限所能操作的事務以及操作權限的一些常用命令語句,需要的朋友可以參考下
    2015-05-05
  • mysql 實現(xiàn)設置多個主鍵的操作

    mysql 實現(xiàn)設置多個主鍵的操作

    這篇文章主要介紹了mysql 實現(xiàn)設置多個主鍵的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • win2008 R2 WEB環(huán)境配置之MYSQL 5.6.22安裝版安裝配置方法

    win2008 R2 WEB環(huán)境配置之MYSQL 5.6.22安裝版安裝配置方法

    這篇文章主要介紹了win2008 R2 WEB環(huán)境配置之MYSQL 5.6.22安裝版安裝配置方法,需要的朋友可以參考下
    2016-06-06
  • 深入理解MySQL中MVCC與BufferPool緩存機制

    深入理解MySQL中MVCC與BufferPool緩存機制

    這篇文章主要介紹了深入理解MySQL中MVCC與BufferPool緩存機制,MySQL默認RR隔離級別就是通過該機制來保證的MVCC,更多主題相關內(nèi)容,需要的可以參考下面文章內(nèi)容介紹
    2022-05-05
  • MySQL數(shù)據(jù)庫線上修改表結構的方法

    MySQL數(shù)據(jù)庫線上修改表結構的方法

    MySQL有一個把鎖,叫做MDL元數(shù)據(jù)鎖,當對表修改的時候,會自動給表加上這把鎖,也就是不需要自己顯式使用,這篇文章主要介紹了MySQL數(shù)據(jù)庫線上修改表結構的方法,需要的朋友可以參考下
    2022-09-09
  • Mysql中分布式鎖的具體實現(xiàn)

    Mysql中分布式鎖的具體實現(xiàn)

    分布式鎖開發(fā)中經(jīng)常使用,本文主要介紹了Mysql中分布式鎖的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • MySql安裝及登錄詳解

    MySql安裝及登錄詳解

    這篇文章主要介紹了MySql安裝及登錄詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03

最新評論