distinct 与 order by 同时使用报错

distinct 与 order by 同时使用报错如下:

ORDER BY clause is not in SELECT list, references column 'create_time' which is not in SELECT list

造成这样的原因是由于:

distinct 是去重,它的优先级高于 order by ,在执行完去重操作之后,会生成新的临时表,而执行 order by 的时候,临时表中没有排序的字段,就报错了。

如何解决: 1,field 中增加排序字段 2,换一种查询方式如下:

SELECT DISTINCT(user_id) as user_id FROM (SELECT * FROM table_name WHERE 1=1 ORDER BY create_time DESC) as tmp_table;

3,修改 mysql 配置文件

vim /etc/my.cnf
#修改 sql_mode 配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#如果有 ONLY_FULL_GROUP_BY 配置,请删除这一项

小提示

如有侵权请邮件通知