中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql使用left?join連接出現重復問題怎么解決

發布時間:2023-05-11 16:27:15 來源:億速云 閱讀:256 作者:iii 欄目:開發技術

這篇文章主要介紹了mysql使用left join連接出現重復問題怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇mysql使用left join連接出現重復問題怎么解決文章都會有所收獲,下面我們一起來看看吧。

    mysql使用left join連接出現重復

    問題描述

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

    問題示例

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

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

    B表是第一類產品表(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 執行的時候發現

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

    mysql使用left?join連接出現重復問題怎么解決

    執行結果竟然比user表的總數記錄多

    問題解決

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

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

    mysql使用left join時,右表數據有重復數據

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

    我要說的是如果右表 (table_name2)出現重復數據(業務上完全重復)該怎么處理。

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

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

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

    關于“mysql使用left join連接出現重復問題怎么解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql使用left join連接出現重復問題怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    巴里| 秀山| 云龙县| 集安市| 竹山县| 灵山县| 大埔县| 安徽省| 神木县| 凤阳县| 喀喇| 孟津县| 两当县| 会同县| 麦盖提县| 云浮市| 广河县| 富宁县| 武川县| 民县| 龙门县| 东安县| 蓝山县| 荆州市| 镇赉县| 灵山县| 凤城市| 车险| 九龙坡区| 石棉县| 崇明县| 新竹县| 深圳市| 广西| 东宁县| 满城县| 北流市| 洞头县| 英山县| 乡城县| 嘉峪关市|