一个sql的问题,求指教.

小小小小周 2010-11-25 05:34:34
表结构:
CREATE TABLE `aaa` (
`id` int(11) DEFAULT NULL,
`time` datetime DEFAULT NULL,
`path` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


数据:
insert into `aaa`(`id`,`time`,`path`) values (1,'2010-11-25 14:33:00','~/a/001.jpg');
insert into `aaa`(`id`,`time`,`path`) values (2,'2010-11-25 14:33:00','~/a/002.jpg');
insert into `aaa`(`id`,`time`,`path`) values (3,'2010-11-25 14:33:00','~/a/003.jpg');
insert into `aaa`(`id`,`time`,`path`) values (4,'2010-11-25 14:35:00','~/a/014.jpg');
insert into `aaa`(`id`,`time`,`path`) values (5,'2010-11-25 14:36:00','~/a/014.jpg');
insert into `aaa`(`id`,`time`,`path`) values (6,'2010-11-25 14:36:00','~/a/014.jpg');
insert into `aaa`(`id`,`time`,`path`) values (7,'2010-11-25 14:34:00','~/a/014.jpg');
id 4和5的数据是一样的,

需要得到的结果:

1 2010-11-25 14:33:00 ~/a/001.jpg
2 2010-11-25 14:33:00 ~/a/002.jpg
3 2010-11-25 14:33:00 ~/a/003.jpg
6 2010-11-25 14:36:00 ~/a/014.jpg


要求是:只要取出path不同的,相同的path取时间大的一行



...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-11-25
  • 打赏
  • 举报
回复
其中一种MYSQL的解法如下。

mysql> select * from aaa;
+------+---------------------+-------------+
| id | time | path |
+------+---------------------+-------------+
| 1 | 2010-11-25 14:33:00 | ~/a/001.jpg |
| 2 | 2010-11-25 14:33:00 | ~/a/002.jpg |
| 3 | 2010-11-25 14:33:00 | ~/a/003.jpg |
| 4 | 2010-11-25 14:35:00 | ~/a/014.jpg |
| 5 | 2010-11-25 14:36:00 | ~/a/014.jpg |
| 6 | 2010-11-25 14:36:00 | ~/a/014.jpg |
| 7 | 2010-11-25 14:34:00 | ~/a/014.jpg |
+------+---------------------+-------------+
7 rows in set (0.06 sec)

mysql> select *
-> from (select * from aaa order by path,time desc,id desc) t
-> group by path;
+------+---------------------+-------------+
| id | time | path |
+------+---------------------+-------------+
| 1 | 2010-11-25 14:33:00 | ~/a/001.jpg |
| 2 | 2010-11-25 14:33:00 | ~/a/002.jpg |
| 3 | 2010-11-25 14:33:00 | ~/a/003.jpg |
| 6 | 2010-11-25 14:36:00 | ~/a/014.jpg |
+------+---------------------+-------------+
4 rows in set (0.08 sec)

mysql>
ACMAIN_CHM 2010-11-25
  • 打赏
  • 举报
回复
参考下贴中的多种方法

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....
zuoxingyu 2010-11-25
  • 打赏
  • 举报
回复
select max(id),time,path from aaa where not exists(select 1 from aaa a where a.path=aaa.path 
and a.time > aaa.time ) group by time,path


来接个分吧。
0轰隆隆0 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mr_mablevi 的回复:]
还是不对哦,红色的6 大家注意下
[/Quote]

5和6的时间是一样的呀!

SELECT id,time,path FROM (SELECT id,time,path FROM aaa order by time desc,id desc) bbb  GROUP BY path

小小小小周 2010-11-25
  • 打赏
  • 举报
回复
还是不对哦,红色的6 大家注意下
wangqiang_lenovo 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fulong258 的回复:]
刚才看错了

SQL code
SELECT id,time,path FROM (SELECT id,time,path FROM aaa order by time desc) bbb GROUP BY path
[/Quote]
3楼的正确。
0轰隆隆0 2010-11-25
  • 打赏
  • 举报
回复
刚才看错了
SELECT id,time,path FROM (SELECT id,time,path FROM aaa order by time desc) bbb  GROUP BY path
0轰隆隆0 2010-11-25
  • 打赏
  • 举报
回复
SELECT id,time,path FROM aaa GROUP BY path order by id asc
小小小小周 2010-11-25
  • 打赏
  • 举报
回复
更正 id 5和6的数据是一样.

56,677

社区成员

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

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