1

我需要从一个表中选择多个列,以及其中一个列的最大值结果必须只有最大值所在的那一行。这是我的表的简化版本(对不起,不知道如何插入空格)

╔═════════╦══════════╦═══════════╗
║ 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

它将显示每个品牌等的最大值,而不仅仅是具有绝对最大值的行。我怎样才能做到这一点?

4

1 回答 1

4

您可以使用子查询来获取表的最大值carweight并将其等同于外部查询的carweight.

SELECT  *
FROM    tableName
WHERE   carweight = (SELECT MAX(carweight) FROM tableName)

输出

╔═════════╦══════════╦═══════════╗
║ CARMAKE ║ CARMODEL ║ CARWEIGHT ║
╠═════════╬══════════╬═══════════╣
║ A       ║ B        ║      1000 ║
╚═════════╩══════════╩═══════════╝

这样做的好处是它支持关系,它们具有相同carweight的值并且恰好是最大值。

于 2013-03-31T09:43:08.180 回答