簡體   English   中英

Mysql加入兩個表

[英]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_Btwo record IDs of 2343

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM