获取表中记录最多的id

Posted

技术标签:

【中文标题】获取表中记录最多的id【英文标题】:Get id with most records in the table 【发布时间】:2022-01-06 17:05:11 【问题描述】:

表格名称:办公室

CompanyID   OfficeLocation
01          USA
01          Africa  
03          USA
04          USA
04          Israel 
04          Germany
05          Africa

我需要获取该表中记录最多的 CompanyID(上表为 04) 我试过了:

SELECT CompanyID
GROUP BY CompanyID
HAVING COUNT(*) = ( 
    SELECT COUNT (*) FROM EntitySite
    GROUP BY CompanyID
    ORDER BY COUNT(*) DESC
)

Dsnt 工作(

【问题讨论】:

【参考方案1】:

您可以使用下一个简单查询:

SELECT CompanyID, COUNT(OfficeLocation) CountOfficeLocation
FROM EntitySite
GROUP BY CompanyID
ORDER BY CountOfficeLocation DESC
LIMIT 1;

mysql query online

【讨论】:

【参考方案2】:

首先,问题是抽象的,数据没有明显的关系(不同的id有不同的国家),不知道计数时考虑什么id(第一个,最后一个或随机)。

但是,这是我得到的查询,这将首先返回最常见的,最后返回最不常见的。

SELECT CompanyID
FROM
(
    SELECT count(*) as c,
           CompanyID
    FROM Offices
    GROUP BY CompanyID
) T
ORDER BY c desc 

【讨论】:

我有带办公室的桌子,而我在其他桌子上有公司。我需要找到办公室最多的公司,也就是办公室表中记录最多的公司。因此,办公桌具有代表公司和办公地点的 ID。如果公司有 3 个办公室 - office 表中有 3 条记录具有相同的公司 ID,而其他列(如地址等)中有不同的内容。尝试了您的查询,但它返回了有 1 条记录的公司:/

以上是关于获取表中记录最多的id的主要内容,如果未能解决你的问题,请参考以下文章

在单独的关键字表中搜索匹配最多的 id

如何在“审计”表中显示“使用”最多的客户的信息(存储过程)

如何在Rails 5中获取具有匹配ID的连接表中的记录数

sql - 从多个连接表中获取匹配行数

在大型mysql表中找到每个不同的其他值出现次数最多的值的有效方法[关闭]

Laravel 获取记录最多的前 5 个 ID