mysql查询问题

卿久久丶 2017-09-18 03:49:33
SELECT * FROM (SELECT
obj.userId,
obj.allAsset,
CASE
WHEN @rowtotal = obj.allAsset THEN
@rownum
WHEN @rowtotal := obj.allAsset THEN
@rownum := @rownum + 1
WHEN @rowtotal = 0 THEN
@rownum := @rownum + 1
END AS rownum
FROM
(
SELECT
userId,
allAsset
FROM
`UserAsset` ORDER BY allAsset DESC
) AS obj ,
(SELECT @rownum := 0 ,@rowtotal := NULL) r) AS R
5.5.56版本通过此查询查询出来的数据不正确,5.7查询出来的数据是正确的
下边是数据库表信息

...全文
212 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
卿久久丶 2017-09-18
  • 打赏
  • 举报
回复
找到原因啦,因为mariadb跟mysql的order by策略不一样,mariadb需要加一个limit才能保证子查询的order by被执行

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧