繁体   English   中英

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

[英]MySQL: Using COUNT function inside a SELECT statement

我对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'

但它只返回总行数,无论在线= 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 ,您只能使用一个不同的nameTotalNum

这只是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM