Mysql 如果计数小于一个数字,则获取对象
我有两个简单的表格-Mysql 如果计数小于一个数字,则获取对象,mysql,sql,sybase,Mysql,Sql,Sybase,我有两个简单的表格-公司和集团。我还有一个表FirmGroupsLink,用于在它们之间建立连接(连接是一对多) 表Firm具有属性-FirmID,FirmName,City 表Groups具有属性-GroupID,GroupName 表FirmGroupsLink具有属性-FrmID,GrpID 现在我想做一个查询,它将返回所有比@num更少的组的公司,所以我写 SELECT FirmID, FirmName, City FROM (Firm INNER JOIN FirmGroupsLink
公司
和集团
。我还有一个表FirmGroupsLink
,用于在它们之间建立连接(连接是一对多)
表Firm
具有属性-FirmID
,FirmName
,City
表Groups
具有属性-GroupID
,GroupName
表FirmGroupsLink
具有属性-FrmID
,GrpID
现在我想做一个查询,它将返回所有比@num更少的组的公司,所以我写
SELECT FirmID, FirmName, City
FROM (Firm INNER JOIN FirmGroupsLink ON Firm.FirmID =
FirmGroupsLink.FrmID)
HAVING COUNT(FrmID)<@num
选择FirmID、FirmName、City
FROM(Firm内部连接firmGroups在Firm.FirmID上链接=
FirmGroupsLink.FrmID)
拥有计数(FrmID)为了正确计数,您需要提供您所在的组。
having子句,而且如果不进行分组,计数也无法工作
这是按实数计算的。事实上,因为您需要检索有关公司的信息,所以您要按FirmId、FirmName和City进行分组,因此查询应如下所示:
SELECT Firm.FirmID, Firm.FirmName, Firm.City
FROM Firm
LEFT OUTER JOIN FirmGroupsLink
ON Firm.FirmID = FirmGroupsLink.FrmID
GROUP BY Firm.FirmID, Firm.FirmName, Firm.City
HAVING COUNT(FrmID) < @num
选择Firm.FirmID、Firm.FirmName、Firm.City
从公司
左外联接固定组链接
在Firm.FirmID=FirmGroupsLink.FrmID上
按Firm.FirmID、Firm.FirmName、Firm.City分组
有计数(FrmID)<@num
请注意,我将内部连接
替换为左侧外部连接
,因为您可能需要不属于任何组的固定连接。回答得很好!这正是我想做的。谢谢你的帮助!