我想计算唯一的operatingSystemIds数量
看我的案子:
表:计算机
+--------------+-------------------+ | name | operatingSystemId | +--------------+-------------------+ |ComputerName01| 1 | +--------------+-------------------+ |ComputerName02| 2 | +--------------+-------------------+ |ComputerName03| 2 | +--------------+-------------------+ |ComputerName04| 2 | +--------------+-------------------+
OperatingSystemId是指另一个列出操作系统的表
表:操作系统
+--------------+--------------------------------+ | id | name | +--------------+--------------------------------+ |1 |Microsoft Windows 7 Enterprise | +--------------+--------------------------------+ |2 |Microsoft Windows 8.1 Enterprise| +--------------+--------------------------------+
我想从计算机表中计算,获取唯一的operatingSystemIds的数量:
1:1
2:3
或
Microsoft Windows 7 Enterprise:1
Microsoft Windows 8.1 Enterprise:3
很抱歉,这个话题肯定已被多次处理过,但我是SQL的新手。
我已经尝试过应用我发现的几个例子,但没有任何成功。
我事先感谢你的帮助。
杰
答案 0 :(得分:0)
您需要具有唯一操作系统ID的数量。
操作系统ID,计数(*)
1 1
2 3
你需要加入什么?这都可以在计算机表中完成。
SELECT OperatingSystemID, count(*) from computers group by 1
OperatingSystemId是指列出操作的另一个表 系统
是的,但由于此表上的ID是主键,因此这些值是唯一的。无需参考此表。只要您知道每个ID与该表中的相应名称相关联。但是,如果您确实要在此查询中包含该名称...
SELECT a.OperatingSystemID, b.Name, count(a.OperatingSystemID) from computers a
inner join operatingsystem b
ON a.OperatingSystemID = b.ID
在这里,您只使用内部联接从操作系统表中提取名称,而不是其他内容。我不认为这会解释你的结果,但我可能是错的。
答案 1 :(得分:-1)
左转加入
SELECT o.`name` , COUNT(o.id) `count` FROM
computers c
LEFT JOIN operatingsystems o ON (c.operatingSystemId =o.id)
GROUP BY o.id