首页 > mysql查询问题

mysql查询问题

table:test
字段:uid,num,time
记录:
123,1,1372727555
123,1,1372727557

有没有一条语句能查出最后一条记录的时间,和这个用户一共有几条记录

SELECT time,count(*) FROM test where uid=123 order by time desc;
1372727555 ,2
这个只能查到第一条记录的时间,后面的order by失效


@halty 正解. 我这里说说楼主的sql哪里错了吧.

SELECT time,count(*) FROM test where uid=123 order by time desc;

select里用了聚集函数count(*), 则启用了分组机制, 即所有查询结果当成一个大组来处理. 而这里select, order by里的time没有放入聚集函数中, 这在标准sql里是不允许的. 但是mysql有group by的扩展, 可以给你返回一个值, 这个值按理是不确定的, 但根据实际经验, 一般都是在数据库中 实际存储 最前的那条记录.

所以, 上述sql 在select后只有一条记录, 针对此记录做了order by.


select max(time),count(*) from test where uid=123;
【热门文章】
【热门文章】