MySQL中是否有任何功能,如Oracle的density_rank()和row_number()?

MySQL中是否有任何功能,如Oracle的density_rank()和row_number()?,第1张

MySQL中是否有任何功能,如Oracle的density_rank()和row_number()?

Mysql没有它们,但是您可以

row_number()
使用使用用户定义的变量的以下表达式进行模拟:

(@row := ifnull(@row, 0) + 1)

像这样:

select *, (@row := ifnull(@row, 0) + 1) row_numberfrom mytableorder by id

但是如果您要重用该会话,

@row
它将仍然被设置,因此您需要像这样重置它:

set @row := 0;select *, (@row := @row + 1) row_numberfrom mytableorder by 1;

参见SQLFiddle。

dense_rank()
可能,但是火车残骸;我建议在应用程序层处理该要求。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5022559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存