[英]MySQL: Using COUNT function inside a SELECT statement
我对MySQL查询相当新,尤其是更复杂的查询。 我有两个表要加入(x和y)。 表x包含Name,ID和TotalNum,其中y包含ID和Online。 所以它看起来像这样:
Name | Store| TotalNum
Blah | 1 | 3
Blah1 | 2 | 2 Etc..
Store| Lane | Online
1 | 1 | 1
1 | 2 | 1
1 | 3 | 0
2 | 1 | 1
2 | 2 | 0
Etc..
我正在尝试将我的表连接在一起并返回一个计数,其中Online = 1所以,我所追求的结果是:
Name | TotalNum | Online
Blah | 3 | 2
Blah1 | 2 | 1
Etc..
到目前为止,我有以下查询:
SELECT s.Name, s.TotalNum, COUNT(r.Online = 1) AS Online FROM TableX AS r
LEFT JOIN TableY AS s ON s.Store = r.Store
WHERE r.Store = 'xx'
但它只返回总行数,无论在线= 1还是0。任何帮助表示赞赏。 谢谢
这应该这样做:
SELECT x.Name, x.TotalNum, SUM(y.Online = 1) Online FROM TableX x
LEFT JOIN TableY y ON x.Store = y.Store
WHERE x.Store = 'xx'
如果你想要一个0
如果TableY
没有匹配的元素那么你应该COALESCE
结果: COALESCE(SUM(y.Online = 1))
。
此外,我不清楚你的ID
是什么意思,因为我在查询和表格中都没有看到任何内容。 但是,此查询的工作原理是,对于单个Store
,您只能使用一个不同的name
和TotalNum
。
这只是online
总结的问题!
SELECT
s.Name,
s.TotalNum,
sum(r.Online) AS Online
FROM TableX AS r
LEFT JOIN TableY AS s ON s.Store = r.Store
WHERE r.Store = 'xx'
使用count的这个方法对我也有用:
SELECT tablex.name, tablex.storeID, tablex.totalNum, count(online) FROM tablex
INNER JOIN tabley
ON tablex.storeID = tabley.storeID
WHERE online = 1
GROUP BY name
我的结果
name storeID totalNum count(online)
blaA 1 3 2
blaB 2 2 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.