我有个问题。这似乎很容易解决,但事实上我不知道为什么它不工作!
我有两张桌子:

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/

10-12 12:26
查看更多