我需要从表中选择多个列,以及其中一个列的最大值 结果必须只是最大值所在的一行。 这是我的表的简化版本(抱歉,不知道如何插入空格)
╔═════════╦══════════╦═══════════╗
║ CARMAKE ║ CARMODEL ║ CARWEIGHT ║
╠═════════╬══════════╬═══════════╣
║ A ║ B ║ 1000 ║
║ C ║ D ║ 900 ║
╚═════════╩══════════╩═══════════╝
期望的结果是
╔═════════╦══════════╦═══════════╗
║ CARMAKE ║ CARMODEL ║ CARWEIGHT ║
╠═════════╬══════════╬═══════════╣
║ A ║ B ║ 1000 ║
╚═════════╩══════════╩═══════════╝
但是当我使用
时SELECT carmake, carmodel, MAX(carweight)
FROM car
GROUP BY carmake, carmodel
它将显示每个品牌等的最大值,而不是仅显示绝对最大值的行。我怎么能这样做?
答案 0 :(得分:4)
您可以使用子查询获取carweight
表的最大值,并将其等同于外部查询的carweight
。
SELECT *
FROM tableName
WHERE carweight = (SELECT MAX(carweight) FROM tableName)
输出
╔═════════╦══════════╦═══════════╗
║ CARMAKE ║ CARMODEL ║ CARWEIGHT ║
╠═════════╬══════════╬═══════════╣
║ A ║ B ║ 1000 ║
╚═════════╩══════════╩═══════════╝
这样做的好处是它支持关系,它们具有相同的carweight
并且碰巧是最大值。