sql 如何查询同一个字段中,日期最近的那个记录

如司机用车情况:
姓名 日期 行程
张三 2011-9-1 北京
李 四 2011-9-2 西安
张三 2011-9-4 南京
张三 2011-9-10 云南

想要的结果是:

张三 2011-9-10 云南
李四 2011-9-2 西安

使用“order by  字段名 desc ”对日期字段进行倒序排序即可。

sql语法:select  * from 表名 order by 日期字段名 desc 

其中,排序的时候order by 后面跟着需要进行排序的字段名,排序可以有两种,默认是asc升序(在sql中可以不写),如果希望降序排列的话,可以使用desc。如你想要最近的日期的话就只需要降序即可。

举例:如tpl_purchase_order 是我的订单表,该表有一个字段创建日期(字段名:CREDATE)是日期类型,希望通过sql实现按照按照创建日期由近到远的顺序排列。

对应sql: select * from  tpl_purchase_order order by  credate desc;

sql执行后输出结果为:

扩展资料:

我们可以通过一些实例来具体分析排序order by 子句的用法:

假设有Orders 表如下:


1、实例 1

以字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

结果如下:

2、实例 2

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

结果如下:

3、实例 3

以逆字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

结果如下:

4、实例 4

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

结果如下:

注意:在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
SELECT *
FROM TAB,(SELECT 姓名,max(日期) 日期
FROM TAB
GROUP BY 姓名) Z
WHERE TAB.姓名=Z.姓名
AND TAB.日期=Z.日期本回答被提问者和网友采纳
第2个回答  2011-09-19
select * from 表
group by 姓名
having 日期=max(日期)
第3个回答  2018-05-10
用 'in(子查询)' 语句运行速度快
SELECT a.姓名,a.日期,a.行程 FROM TAB a
WHERE DATEVALUE(a.日期)&a.姓名 in (SELECT MAX(DATEVALUE(日期)&姓名 FROM TAB GROUP BY 姓名)
直接比较日期会出错,将日期变成数字比,最近的日期不同组也有重复的,直接in日期会出统计错误,用&连接个能表唯一的字段就能避免
相似回答