我需要加入以下两个表
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.我做错了什么?
答案 0 :(得分:2)
将其更改为以下内容:
count(distinct a.userId)
答案 1 :(得分:0)
您的查询将生成两行,每行对应于table_B中的一行(一行用于id 1,一行用于id 2)。
我不确定为什么您认为结果count(a.userId)
应该为1,但您可以使用GROUP BY
GROUP BY b.userId
{{1}}来强制执行此操作。
答案 2 :(得分:0)
我对你在做什么很困惑。您仍然可以获取{em> Pen 和 Mango 的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。 - 查询是正确的,但你的理解是错误的。显然two record IDs of 2343
Table_B