我对MySQL查询相当新,尤其是更复杂的查询.我有两个表要加入(x和y).表x包含Name,ID和TotalNum,其中y包含ID和Online.所以它看起来像这样:
Name | Store| TotalNum
Blah | 1 | 3
Blah1 | 2 | 2 Etc..
Run Code Online (Sandbox Code Playgroud)
Store| Lane | Online
1 | 1 | 1
1 | 2 | 1
1 | 3 | 0
2 | 1 | 1
2 | 2 | 0
Etc..
Run Code Online (Sandbox Code Playgroud)
我正在尝试将我的表连接在一起并返回一个计数,其中Online = 1所以,我所追求的结果是:
Name | TotalNum | Online
Blah | 3 | 2
Blah1 | 2 | 1
Etc..
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下查询:
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'
Run Code Online (Sandbox Code Playgroud)
但它只返回总行数,无论在线= 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'
Run Code Online (Sandbox Code Playgroud)
如果您还想要0if 中没有匹配元素,TableY那么您应该执行COALESCEresults: COALESCE(SUM(y.Online = 1))。
此外,不清楚您的意思,因为ID我在查询中和表中都没有看到任何内容。但是,此查询的工作基础是您只能有一个不同的name和TotalNum一个Store.