下面是snapshots
:
domain year month day
--- --- --- ---
google 2007 04 15
google 2005 08 31
google 2005 12 01
facebook 2006 04 15
facebook 2006 02 25
facebook 2008 01 01
我想检索的是每个域的第一个(最早)日期。
因此输出应为:
google 2005 08 31
facebook 2006 02 25
我尝试了以下查询,但它检索每列的最小值:
select domain, min(year), min(month), min(day) from snapshots group by domain
7条答案
按热度按时间j1dl9f461#
如前所述,您应该使用串联来创建单个日期,然后选择最小值。
我没有测试过这个,但这应该给予你一个想法。
wztqucjr2#
您可以连接date字段中的值,将它们转换为date并选择最小日期(在本例中,我希望值为varchar):
xxls0lw83#
在MySQL中:
mlmc2os54#
可能有更简单的解决方案,但您可以从三列year,month和day中创建一个新的日期类型列。然后按以下方式获取min date:
演示
这将为您提供您想要的确切结果:
polhcujo5#
你能试一下这个吗?如果没有连接,它是否能解决你的问题?如果需要的话,可以通过子查询来使它更健壮。
谢谢你,
詹姆斯
aelbi1ox6#
您可以尝试使用排名函数ROW_NUMBER()
rryofs0p7#
在MS SQL中,你可以这样做:
详情请参阅此fiddle-link:http://sqlfiddle.com/#!18/7ad785/9