[英]Mysql joining two tables
我需要加入以下兩個表
table_A
id userId name score game
1 2343 me 45 Palo Alto
2 6575 other 21 SF
3 6575 other 2 miami
table_B
id userId pen mango
1 2343 3 4
2 2343 5 7
3 6575 1 2
這是加入:
SELECT COUNT(a.userId), SUM(b.pen), SUM(b.mango)
FROM table_A AS a
LEFT JOIN table_B b ON a.userId = b.userId
WHERE userId = 2343;
問題是我得到的數量(userId)等於2,但我需要它為1.我做錯了什么?
將其更改為以下內容:
count(distinct a.userId)
您的查詢將生成兩行,每行對應於table_B中的一行(一行用於id 1,一行用於id 2)。
我不確定為什么你認為結果count(a.userId)
應該是1,但是你可以通過GROUP BY
子句使用GROUP BY b.userId
來強制執行此GROUP BY b.userId
。
我對你在做什么很困惑。 你仍然可以得到SUM
筆和芒果的沒有加入這兩個表。 另外,為什么你仍然使用COUNT
函數,事實上,你知道你只查詢一個 ID? 對?
SELECT SUM(Pen) as TotalPen,
SUM(Mango) as TotalMango
FROM table_B
WHERE userId = 2343
但是如果你想要一個連接表,你可以寫這樣的東西:
SELECT SUM(COALESCE(b.pen,0)) as TotalPen,
SUM(COALESCE(b.mango,0)) as TotalMango
FROM table_A AS a LEFT JOIN table_B b ON a.userId = b.userId
WHERE a.userId = 2343;
問題是我得到count(userId)等於2,但我需要它為1. - 查詢是正確的但你的理解是錯誤的。 顯然, Table_B
有two record IDs of 2343
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.