SELECT `question_id`,from_unixtime(MAX(`created`)) FROM `b_answer` WHERE `pid`=0 GROUP by `question_id` ORDER BY MAX(`created`) DESC
解决办法:使用内部函数先排序再去重
原因:
mysql distinct和order by 一起用时,order by的字段必须在select中。 网上查了一下资料,原因总结如下: 首先,在mysql中distinct 的执行顺序高于order by。 第二,distinct执行时会对查询的记录进行去重,产生一张虚拟的临时表; 第三,order by执行时对查询的虚拟临时表进行排序,产生新的虚拟临时表。 综合来看,如果order by的字段不在select中,执行sql语句时首先执行distinct,之后产生的虚拟临时表中没有order by的字段,所以再执行order by时会报错。
参考:
http://blog.csdn.net/gxj022/article/details/1896423
http://blog.csdn.net/demon7639/article/details/52955385