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的用法來...