多行数据,如何取日期最小的那一行?

坚果壳不是硬壳 2014-02-12 09:56:27
假如我的数据是这样的

车牌号 使用者 使用日期
京***1 张三 2013-02-03
京***1 李四 2013-02-04
京***1 王五 2013-02-05
京***2 赵六 2013-02-03
京***2 朱七 2013-02-04

我想根据车牌找到使用日期最小的那条数据,该怎么做?

期望结果:
车牌号 使用者 使用日期
京***1 张三 2013-02-03
京***2 赵六 2013-02-03


...全文
1031 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 xtdhqdhq 的回复:
[quote=引用 3 楼 xtdhqdhq 的回复:] select num1 ,min(num3) from tablename group by num1;
如果要显示该最小日期对应的驾驶员,则sql 如下: create table `table3` ( `num1` varchar (90), `num2` varchar (90), `num3` datetime ); insert into `table3` (`num1`, `num2`, `num3`) values('京00001','张三','2013-02-03 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00001','李四','2013-02-01 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00001','王六','2013-02-02 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵1','2013-03-02 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵2','2013-03-01 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵3','2013-03-05 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵4','2013-03-01 00:00:00'); SELECT num1,num2,num3 FROM table3 t1 WHERE NOT EXISTS (SELECT 1 FROM table3 t2 WHERE t1.num1=t2.num1 AND t1.num3>t2.num3); [/quote] 我试试效率
果儿妈 2014-02-12
  • 打赏
  • 举报
回复
引用 3 楼 xtdhqdhq 的回复:
select num1 ,min(num3) from tablename group by num1;
如果要显示该最小日期对应的驾驶员,则sql 如下: create table `table3` ( `num1` varchar (90), `num2` varchar (90), `num3` datetime ); insert into `table3` (`num1`, `num2`, `num3`) values('京00001','张三','2013-02-03 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00001','李四','2013-02-01 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00001','王六','2013-02-02 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵1','2013-03-02 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵2','2013-03-01 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵3','2013-03-05 00:00:00'); insert into `table3` (`num1`, `num2`, `num3`) values('京00002','赵4','2013-03-01 00:00:00'); SELECT num1,num2,num3 FROM table3 t1 WHERE NOT EXISTS (SELECT 1 FROM table3 t2 WHERE t1.num1=t2.num1 AND t1.num3>t2.num3);
  • 打赏
  • 举报
回复
引用 4 楼 u012895467 的回复:
[quote=引用 1 楼 u012724379 的回复:]
mysql> select num1,num3 from t1 where num3 <= (select min(num3) from t1);
+------+------------+
| num1 | num3       |
+------+------------+
| 京*1  | 2013-02-03 |
| 京*2  | 2013-02-03 |
+------+------------+
2 rows in set (0.00 sec)
num1:车牌号;
num2:使用者;
num3:使用日期;
敢问这样可以否?
引用 2 楼 zhangbin1988 的回复:

select 车牌号 使用者 使用日期 from table a,
(select 车牌号 min(使用日期)使用日期 from table group by 车牌号 使用日期)b 
where a.车牌号 = b.车牌号 and a.使用日期 = b.使用日期
引用 3 楼 xtdhqdhq 的回复:
select num1 ,min(num3) from tablename group by num1;
可能是我数据拟的不好,让你们误会了 其实我想做的是这样的 select num1, num2, num3 from t1 (select num1,min(num3) num3) t2 where t1.num1 = t2.num2 但是在做大数据时感觉这样的自交效率不是很高,想求是不是能有什么高效的解法 [/quote] 错了,是这样 select num1, num2, num3 from t1 (select num1,min(num3) num3) t2 where t1.num1 = t2.num2 and t1.num3 = t2.num3
  • 打赏
  • 举报
回复
引用 1 楼 u012724379 的回复:
mysql> select num1,num3 from t1 where num3 <= (select min(num3) from t1);
+------+------------+
| num1 | num3       |
+------+------------+
| 京*1  | 2013-02-03 |
| 京*2  | 2013-02-03 |
+------+------------+
2 rows in set (0.00 sec)
num1:车牌号;
num2:使用者;
num3:使用日期;
敢问这样可以否?
引用 2 楼 zhangbin1988 的回复:

select 车牌号 使用者 使用日期 from table a,
(select 车牌号 min(使用日期)使用日期 from table group by 车牌号 使用日期)b 
where a.车牌号 = b.车牌号 and a.使用日期 = b.使用日期
引用 3 楼 xtdhqdhq 的回复:
select num1 ,min(num3) from tablename group by num1;
可能是我数据拟的不好,让你们误会了 其实我想做的是这样的 select num1, num2, num3 from t1 (select num1,min(num3) num3) t2 where t1.num1 = t2.num2 但是在做大数据时感觉这样的自交效率不是很高,想求是不是能有什么高效的解法
果儿妈 2014-02-12
  • 打赏
  • 举报
回复
select num1 ,min(num3) from tablename group by num1;
ayzen1988 2014-02-12
  • 打赏
  • 举报
回复

select 车牌号 使用者 使用日期 from table a,
(select 车牌号 min(使用日期)使用日期 from table group by 车牌号 使用日期)b 
where a.车牌号 = b.车牌号 and a.使用日期 = b.使用日期
-江沐风- 2014-02-12
  • 打赏
  • 举报
回复
mysql> select num1,num3 from t1 where num3 <= (select min(num3) from t1);
+------+------------+
| num1 | num3       |
+------+------------+
| 京*1  | 2013-02-03 |
| 京*2  | 2013-02-03 |
+------+------------+
2 rows in set (0.00 sec)
num1:车牌号;
num2:使用者;
num3:使用日期;
敢问这样可以否?

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧