Mysql连接两个表
我需要连接以下两个表Mysql连接两个表,mysql,join,Mysql,Join,我需要连接以下两个表 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
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;
问题是我得到的count(userId)等于2,但我需要它为1。我做错了什么?您的查询将生成两行,每行对应于表B中的一行(一行用于id 1,一行用于id 2)
我不知道为什么您认为结果的
计数(a.userId)
应该是1,但是您可以通过使用GROUP by
子句a laGROUP by b.userId
将其更改为以下内容:
count(distinct a.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;
问题是我得到的计数(userId)等于2,但我需要它为1。-这个问题是正确的,但你的理解是错误的。显然,在
表B
中有两个记录ID 2343,为什么它必须是1?聚合前的联接结果中有2行,因此计数为2。发布后,我立即得到了答案。但是我不被允许回复我的帖子。谢谢