TIDB7.5 SQL出错: ERROR 3065 (HY000): Expression #1 of ORDER BY clause is not in SELECT list

【 TiDB 使用环境】TIDB7.5
【 TiDB 版本】
【复现路径】 TIDB5.1及MySQL8.0可以执行的SQL。 在TIDB7.5上出错 ERROR 3065 (HY000):。

【遇到的问题:问题现象及影响】
SQL语句:
SELECT DISTINCT b.id AS brand_id,b.brand_name from motobike.model_pic AS p LEFT JOIN motobike.series AS s on p.series_id=s.id LEFT JOIN motobike.brand AS b on s.brand_id=b.id WHERE p.type_id=5 AND p.is_del=0 and b.id is not NULL ORDER BY p.created_stime DESC limit 10;

出错:
of ORDER BY clause is not in SELECT list, references column ‘motobike.model_pic.created_stime’ which is not in SELECT list; this is incompatible with DISTINCT

请问要如何解决?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

与 MySQL 兼容性对比 https://docs.pingcap.com/zh/tidb/v7.5/mysql-compatibility#与-mysql-兼容性对比 没有提到。
问是否有更多兼容性SQL文章?多谢

https://docs.pingcap.com/zh/tidb/stable/sql-mode#sql-模式

看一下sql_mode把ONLY_FULL_GROUP_BY去掉。

另外这个错误和兼容性一点关系没有,mysql的sql_mode设置不对也一样报这个错。

1 个赞

这个语句啥意思呢?

是的。依你的修改SQL_MODE后解决,多谢。

我直接设置 set global sql_mode=‘NO_ENGINE_SUBSTITUTION’; 问题解决了。

1 个赞

建议还是规范sql语句,避免出现返回数据异常的情况,以及避免多余的性能损耗。

order by里出现的字段,在select和from之间没有。

前边还有 distinct,所以语义不明

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。