SQL选择列中具有最大值的行

时间:2020-07-16 20:15:52

标签: sql

我正在建立图书馆数据库。我有一列名为“ ArriveDate”,日期是字符串,格式为MM / DD / YYYY(月和日可能是个位数)。

我想找到新来的东西,所以我需要找到ArriveDate最大的所有书。我对SQL没有任何了解,所以可以提供任何帮助!

示例表:
标题,作者,ArriveDate

Harry Potter 1, J.K. Rowling, 7/1/2020
Harry Potter 2, J.K. Rowling, 7/1/2020
Harry Potter 3, J.K. Rowling, 7/1/2020
Book Title 1, Author Name 1, 6/1/2020
Book Title 2, Author Name 2, 6/1/2020
Magazine 1, Author Name 3, 6/1/2020

预期结果:
标题,作者,ArriveDate

Harry Potter 1, J.K. Rowling, 7/1/2020
Harry Potter 2, J.K. Rowling, 7/1/2020
Harry Potter 3, J.K. Rowling, 7/1/2020

在这里,2020年7月1日是最大的日期

为了澄清,我被卡住了,因为日期存储为字符串。如果有一种方法可以将它们转换为SQL日期,那我将知道如何去做。

3 个答案:

答案 0 :(得分:2)

就像其他人提到的那样,您应该修复表以正确存储日期。如果您对当前的表设置感到困惑,可以尝试Cast('7/1/2020' as datetime)并按照这种方式进行排序,然后可以使用Common Table Expression通过分区语句来获取最上面的一个。

答案 1 :(得分:0)

我无法添加注释,但与Tarik相同,带有来自mysql的示例...

选择* 从表1 其中dateold =(从表1中选择max(dateold))

请检查http://sqlfiddle.com/#!9/49f657/25

答案 2 :(得分:-1)

您可以使用子查询。像

select * from mytable where CONVERT(varchar, arrdate, 1) = (select max(CONVERT(varchar, arrdate, 1)) from mytable)

这是一个类似问题的链接:How to use MAX() on a subquery result?

相关问题