Chinaunix

标题: 一个group by 的问题 [打印本页]

作者: wangliang222002    时间: 2007-07-11 17:31
标题: 一个group by 的问题
有这么一个表
CREATE TABLE `test_group`(
        `user_id` int(10) not null default 0,
        `times` int(10) unsigned not null default 0,
        `other` varchar(20)
        )

数据为
mysql> select * from test_group;
+---------+---------+------------+
| user_id | times   | other      |
+---------+---------+------------+
|       1 |   12345 | a          |
|       1 |  123459 | aaa        |
|       1 | 1234599 | bdfsaaa    |
|       2 |    3339 | 3zsxfd     |
|       2 |   33399 | ffd23zsxfd |
+---------+---------+------------+
我想以user_id分组,取出每个user_id的最新的数据(也就是times最大)
用这条语句只能得到此结果
mysql> select * from test_group group by user_id;
+---------+-------+--------+
| user_id | times | other  |
+---------+-------+--------+
|       1 | 12345 | a      |
|       2 |  3339 | 3zsxfd |
+---------+-------+--------+
我想要的结果是
+---------+---------+------------+
| user_id | times   | other      |
+---------+---------+------------+
|       1 | 1234599 | bdfsaaa    |
|       2 |   33399 | ffd23zsxfd |
+---------+---------+------------+
应该怎么实现呢?
作者: mxbao    时间: 2007-07-12 11:43
select * from (select * from test_group order by times desc) test group by user_id
:wink: :wink:
作者: yueliangdao0608    时间: 2007-07-12 14:10
select * from test_group where times in( select max(times) from test_group group by user_id)
作者: fcloudf    时间: 2007-07-12 16:35
mysql> select user_id, max(times), other from test_group group by user_id;

我的想法比较笨
作者: sunnyfun    时间: 2007-07-13 10:38
标题: 上面的都不对啦:
3楼的比较接近但是没有考虑到times重复的情况

用这个
SELECT *
FROM `test_group` a, (
    SELECT `user_id` , max( `times` ) AS `times`
    FROM `test_group`
    GROUP BY `user_id`
)b
WHERE a.`user_id` = b.`user_id`
AND a.`times` = b.`times`

作者: yueliangdao0608    时间: 2007-11-09 16:43
我觉得LZ的说法有问题。
我想以user_id分组,取出每个user_id的最新的数据(也就是times最大)



最大的数据,不一定是最新的。


1        12345        a
1        123459        aaa
1        1234599        bdfsaaa
2        3339        3zsxfd
2        33399        ffd23zsxfd
2        3339        repeat
0        0        \N
作者: yueliangdao0608    时间: 2007-11-09 16:44
这种问题,加一个时间字段很容易就解决了。
作者: roolg    时间: 2007-11-22 17:53
2 楼方法不是可以了吗 !!!!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2