当前位置:   article > 正文

mysql order by子查询_MySQL 子查询中的order by 不生效

mysql 子查询用order by有用吗

MySQL 子查询中的order by 不生效记录

我们知道group by 会保留第一条数据,当数据库中同一个字段值对应多条不同数据时,加入我们需要取最小的创建时间,可以先写一个子查询,通过时间正序,然后再 group by 即可得到分组中最小创建时间的数据。

但是在 MySQL5.7版本中,子查询的order by 会被优化,然后你实际取得的数据并不是你排序后想要的数据。

网上很多的说法是 在子查询中加入 limit,使 order by 不被单独使用,就可以达到想要的效果。但实际上,这样也是不行的。

像下面的查询,实际上是达不到想要的效果的,取得的数据也不是排序后的数据。

SELECT

tRecord.business_no

FROM

( SELECT business_no, call_time FROM call_record WHERE business_type = 1 ORDER BY call_time DESC LIMIT 20000 ) tRecord

GROUP BY

tRecord.business_no

实际发现加了limit 仍然未生效。

正确应该是,在 group by的时候同时使用 order by,即可生效,如下:

SELECT

tRecord.business_no

FROM

( SELECT business_no, call_time FROM call_record WHERE business_type = 1 ORDER BY call_time DESC LIMIT 20000 ) tRecord

GROUP BY

tRecord.business_no

ORDER BY

tRecord.call_time DESC

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/959571
推荐阅读
相关标签
  

闽ICP备14008679号