MySQL:在SELECT语句中使用COUNT函数

时间:2013-12-11 04:23:41

标签: mysql count

我对MySQL查询相当新,尤其是更复杂的查询。 我有两个表要加入(x和y)。表x包含Name,ID和TotalNum,其中y包含ID和Online。所以它看起来像这样:

表X

Name  | Store| TotalNum 
Blah  | 1    | 3 
Blah1 | 2    | 2 Etc..

表Y

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'

但它只返回总行数,无论Online = 1还是0。 任何帮助赞赏。感谢

3 个答案:

答案 0 :(得分:1)

这应该这样做:

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

此外,name并不清楚您的意思,因为我在查询和表格中都没有看到任何内容。但是,此查询的工作原理是,对于单个TotalNum,您只能有一个Store和{{1}}个。{/ p>

答案 1 :(得分:1)

这只是总结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'

答案 2 :(得分:1)

这种使用计数的方法对我也有用:

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