mysql group by问题

一个表 table

A     B     C   

1   101   200

1   102   203

2   103   205

2   104   204

select  A,B,C from table group by A

结果

A     B      C

1     101   200

2     103   205


如果B,C不是聚合函数的话,他会默认为 A相同情况下,显示默认顺序下的第一条


select A,max(B),c from table group by A

结果

A     B     C

1    102  200

2    104  205

这种 有函数的时候 就会出现奇怪的数据

B 是 求的最大值,而C还是第一条数据的C值,如果最大值 就是第一条数据,则这条数据才是正确的,否则就乱了.


所以对于这种情况,要想用group by显示 每个A下的最后一条记录

就只能用子查询 

select A,B,C from(

select A,B,C from table order by id(自增字段) desc) t

group by t.A

这时数据就正确了。

仅此记录一下。

你可能感兴趣的:(mysql,by,group)