我有个问题。这似乎很容易解决,但事实上我不知道为什么它不工作!
我有两张桌子:
HOSTS(id, hostgroup_id)
HOSTGROUPS(id, name)
使用这些插入的行:
HOSTS
________________________
id | hostgroup_id
________________________
1 | 1
2 | 1
3 | 2
4 | NULL -- a host can have no hostgroup
________________________
HOSTGROUPS
________________________
id | name
________________________
1 | ARM
2 | Spark
3 | Pyro
________________________
这样,我只想计算每个主机组中的主机数。
以下是我的SQL查询:
SELECT HG.name, COUNT(H.id) AS count
FROM HOSTS H, HOSTGROUPS HG
WHERE H.hostgroup = HG.id
UNION DISTINCT
SELECT HG.name, 0 AS count
FROM HOSTS H, HOSTGROUPS HG
WHERE (H.hostgroup = HG.id) = FALSE
这是我的结果:
_____________________
name | count
_____________________
ARM | 2 -- OK
Spark | 0 -- NOPE, INTENDED 1
Pyro | 0 -- OK
ARM | 0 -- NOPE, DUPLICATED ROW
_____________________
最后,我要等待的是:
_____________________
name | count
_____________________
ARM | 2
Spark | 1
Pyro | 0
_____________________
谢谢你们的回答伙计们!:)
最佳答案
试试这个:
SELECT hg.name,
(SELECT COUNT(*)
FROM HOSTS h
WHERE h.hostgroup_id = hg.id)
FROM HOSTGROUPS hg
关于mysql - 计数表中的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36788403/