SQL如何在几个几乎相同的行中选择具有最大一个字段的行?

时间:2015-06-01 14:58:32

标签: sql select

假设我有三行,其中有关于批量购买水果的合同的以下数据。

NAME ---- LOCATION ---- EXPIRATION DATE
Apples    Pittsburgh    10/10/2015
Apples    Pittsburgh    1/2/2016
Apples    Pittsburgh    12/31/2015

如果我有一个巨大的实体列表,其中一些成果有多个条目,我想总是选择最新的合同到期日期,我会在SQL选择查询中添加什么?

所以在这3个实体中,我希望最后一行(并且唯一一个显示在select查询中)是具有LATEST到期日期的那一行...在这个例子中它将是具有“1/2/2016”的到期日

2 个答案:

答案 0 :(得分:1)

在您描述问题时,解决方案很简单group by

select name, max(expirationdate)
from contracts t
group by name;

这假设到期日期以表格中的本机日期/时间格式存储。使用正确的类型存储日期非常重要,如果有人错误地给它一个字符串类型,你应该更改类型。查看数据库的ALTER TABLE命令。

答案 1 :(得分:0)

也许

my_room
your_room

如果你想分开地址,或

 select "NAME", "LOCATION", MAX( "EXPIRATION DATE" ) from MyTable 
 group by "NAME", "LOCATION" 

如果您一次只需要水果最大值,那么在所有位置中

检查演示并根据您的需要进行调整:http://sqlfiddle.com/#!5/87599/5/0