MySQL:如何将结果限制为另一个字段的最大值?
在这个场景中,我试图报告每个不同计算机id的操作系统版本,其中该计算机id的报告id最大 目前,我得到以下结果:MySQL:如何将结果限制为另一个字段的最大值?,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,在这个场景中,我试图报告每个不同计算机id的操作系统版本,其中该计算机id的报告id最大 目前,我得到以下结果: operating_system_version | computer_id | report_id 10.8 | 1 | 10 10.9 | 1 | 20 10.9 | 2 | 11 10.8 | 2 | 21 此语句返回上述内容: SELECT operating_systems.operating_system_version, reports.computer
operating_system_version | computer_id | report_id
10.8 | 1 | 10
10.9 | 1 | 20
10.9 | 2 | 11
10.8 | 2 | 21
此语句返回上述内容:
SELECT operating_systems.operating_system_version,
reports.computer_id,
reports.report_id
FROM operating_systems
INNER JOIN reports
ON operating_systems.report_id = reports.computer_id
而是返回每个不同计算机id的最新(最高报告id)操作系统版本,例如:
operating_system_version | computer_id | report_id
10.9 | 1 | 20
10.8 | 2 | 21
我是SQL的新手。。感谢您的帮助。您需要添加group by语句和having语句 旁边的小组看起来像
group by computer_id
这个房间看起来像
having report_id= (select max(report_id) )
子查询将引导您获得所需的最终结果:
SELECT os.operating_system_version,
r2.computer_id,
MAX(r2.report_id)
FROM (
SELECT DISTINCT computer_id
FROM reports
) r
INNER JOIN operating_systems os
ON os.report_id = r.computer_id
INNER JOIN reports r2
ON r2.computer_id = r.computer_id
需要在查看其他职位时做得更好。这个问题在一篇优秀的帖子中得到了回答:这个问题很常见。跟随标签寻找许多解决方案。好的,哇。找到了一个很好的帖子:不幸的是,这只返回了一条记录:操作系统版本计算机id最大(r2.report id)10.8 2 21,而不是需要返回的10.9 1 20 10.8 2 21,这是每台计算机id的最高报告id。可能是因为我是n00b,但我得到的是:“where子句”中的未知列“r2.reports_id”
SELECT os.operating_system_version,
r2.computer_id,
MAX(r2.report_id)
FROM (
SELECT DISTINCT computer_id
FROM reports
) r
INNER JOIN operating_systems os
ON os.report_id = r.computer_id
INNER JOIN reports r2
ON r2.computer_id = r.computer_id