MYSQL JOIN查詢資料出現重複問題的解決

2021-10-18 06:41:18 字數 691 閱讀 3632

tablea id

uidinvite_uid111

2042

12204

tableb id

uidmoney

1204102

20410

執行sql語句

select sum(b.money) as money

from tableb b join tablea a on a.invite_uid = b.uid group by a.invite_uid

出現的結果:結果

money

40那麼,為什麼會出現這種情況呢?

首先我知道他們的連表條件是 a.invite_uid=b.uid,表a中的invite_uid在其中是有2條記錄的,這樣導致每一條記錄都會跟表b連線一次,所以它們會產生四條記錄,那麼sum的值當然是4個10相加的值。

知道了問題出現的原因,我就能找到好的方法,既然表a會有重複的,把錶a按使用者分組。

新的sql語句

select a.* from (select sum(money) as money,invite_uid from tableb group by uid) as a 

join tablea b on a.invite_uid=b.uid group by b.invite_uid

mysql join連線查詢

hash join 雜湊連線 sort merge join 合併排序連線 join的連線方式的的選擇 阿里sql軍規 強制 超過三個表禁止join。需要join的字段,資料型別必須絕對一致 多表關聯查詢時,保證被關聯的字段需要有索引。說明 即使雙表join也要注意表索引,sql效能。nested ...

MySqljoin查詢筆記

一 內連線查詢 inner join 關鍵字 inner join on 語句 select from a table a inner join b table b on a.a id b.b id 說明 組合兩個表中的記錄,返回關聯字段相符的記錄,也就是返回兩個表的交集 陰影 部分。案例解釋 在b...

mysql相關查詢 MySQL Join相關查詢

前言 有時為了得到完整的結果,我們需要從兩個或者更多的表中獲取資料,這時join就派上用場了。它可以基於這些表之間的共同欄位把表結合起來。它有幾種形式,分別為 join inner join left join right join等等。其中join和inner join相同,這裡以join的用法來...