现象:
1.去掉 ORDER BY menu.SORT_NO ASC 或 DISTINCT 以后发现能正常查询,得出DISTINCT不能和order by一起使用
分析原因:
首先,distinct的执行顺序高于order by。
第二,distinct执行时会对查询的记录进行去重,产生一张虚拟的临时表;
第三,order by执行时对查询的虚拟临时表进行排序,产生新的虚拟临时表。
综合来看,如果order by的字段不在select中,执行sql语句时首先执行distinct,之后产生的虚拟临时表中没有order by的字段,所以再执行order by时会报错。
解决:
在sql的查询字段中添加排序的字段即可