【MYSQL 第4篇】left join 數(shù)據(jù)結(jié)果比預(yù)計(jì)值大的問題

近期我在做路徑轉(zhuǎn)化分析,發(fā)現(xiàn)用left join嵌套查詢輸出的結(jié)果遠(yuǎn)比預(yù)計(jì)結(jié)果要大,先來看看例子:

         CREATE TABLE `atext`;
         USE `atext`;
         CREATE TABLE `用戶行為`(
                          id INT,
                      UUID CHAR(32),
                          date_str DATE,
                          pv_sid INT,
                          pv_seq INT,
                          click_event CHAR(10)
                          );
                     LOAD DATA LOCAL INFILE  'C:\\Users\\yuankun\\Desktop\\501.csv' INTO TABLE 用戶行為 FIELDS TERMINATED BY ',';

        #"用戶行為"表導(dǎo)入了2261條記錄      
             
           CREATE TABLE `用戶行為2`(
                            id INT,
                         UUID CHAR(32),
                            date_str DATE,
                           pv_sid INT,
                          pv_seq INT,
                        click_event CHAR(10)
                          );
                  LOAD DATA LOCAL INFILE 'C:\\Users\\yuankun\\Desktop\\502.csv' INTO TABLE 用戶行為2 FIELDS TERMINATED BY ',';

           #"用戶行為2"表導(dǎo)入了9890條記錄    

         SELECT a.*,b.* FROM
           (SELECT
          DISTINCT
             `id`
             ,UUID
             ,date_str
            ,pv_sid
            ,pv_seq
            ,click_event
          FROM `用戶行為`) a
           LEFT JOIN
            (SELECT
           DISTINCT
             `id`
             ,UUID
             ,date_str
             ,pv_sid
             ,pv_seq
             ,click_event
          FROM `用戶行為2`) b
         ON a.uuid = b.uuid
         AND a.pv_sid = b.pv_sid

       #數(shù)據(jù)結(jié)果是3310條記錄,比預(yù)計(jì)應(yīng)該輸出a表的記錄2261條多了很多。

這是什么原因呢?
原因就是"用戶行為"表中的uuid 和pv_sid與"用戶行為2"表中的uuid 和pv_sid是一對(duì)多的關(guān)系,故輸出的結(jié)果會(huì)是多對(duì)多,使“用戶行為”表復(fù)制相應(yīng)的條數(shù)匹配與“用戶行為2”表已經(jīng)對(duì)應(yīng)好的記錄。
所以在每個(gè)子查詢中加入了distinct,依然會(huì)出現(xiàn)以上情況。如果去掉distinct,同樣原理,會(huì)出現(xiàn)多對(duì)多的情況,輸出結(jié)果會(huì)更離譜。
如何解決以上情況:
1、轉(zhuǎn)化思路,用其他的方法來計(jì)算用戶路徑轉(zhuǎn)化;
2、增加唯一識(shí)別的主鍵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容