专注于discuz,uchome,dedecms等各类PHP程序仿站(二次开发和模板制作)。

« »
2013-08-13PHP+mysql

2,452 阅读

MySQL一个表里取不唯一记录取最后一行方法

 

如下表:

CREATE TABLE `t1` (
`userid` INT(11) DEFAULT NULL,
`atime` datetime DEFAULT NULL,
KEY `idx_userid` (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据如下:

MySQL> SELECT * FROM t1;
+--------+---------------------+
| userid | atime |
+--------+---------------------+
| 1 | 2013-08-12 11:05:25 |
| 2 | 2013-08-12 11:05:29 |
| 3 | 2013-08-12 11:05:32 |
| 5 | 2013-08-12 11:05:34 |
| 1 | 2013-08-12 11:05:40 |
| 2 | 2013-08-12 11:05:43 |
| 3 | 2013-08-12 11:05:48 |
| 5 | 2013-08-12 11:06:03 |
+--------+---------------------+
8 ROWS IN SET (0.00 sec)

其中userid不唯一,要求取表中每个userid对应的时间离现在最近的一条记录.初看到一个这条件一般都会想到借用临时表及添加主建借助于join操作之类的.
给一个简方法:

MySQL> SELECT userid,substring_index(group_concat(atime ORDER BY atime DESC),”,”,1) AS atime FROM t1 GROUP BY userid;
+——–+———————+
| userid | atime |
+——–+———————+
| 1 | 2013-08-12 11:05:40 |
| 2 | 2013-08-12 11:05:43 |
| 3 | 2013-08-12 11:05:48 |
| 5 | 2013-08-12 11:06:03 |
+——–+———————+
4 ROWS IN SET (0.03 sec)

Good luck!

 

 

FAQ:一个表里取不唯一记录取最后一行方法 – MySQL支持.

原创文章如转载,请注明:转载自火跃工作室
本文网址:http://www.huoyue.org/mysql-mutli-rows-get-last-one

日志信息 »

该日志于2013-08-13 02:26由 火跃 发表在PHP+mysql分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

没有评论

发表评论 »