首页 > 解决方案 > 如何将 Limit 和 Offset 与 alias 一起使用,其中 alias 是递增的序列号?

问题描述

我使用别名作为排名编号,每行递增 +1。我有 1000 多行。使用时limit 100 offset 0,别名显示正确1-100,但是当limit 200 offset 100我期望别名显示为时101,102,....200,它从 1 开始,而行数据实际上来自101 - 200.

我希望别名随着限制和偏移量增加。

SELECT (@a := @a + 1)asset_rank,
totalSupply,
lastPriceUSD,
marketCap
CAST(volume_24h AS DECIMAL(65, 0)) AS volume24h,
(CASE
WHEN lastPriceUSD > 1 THEN CONCAT('$', FORMAT(lastPriceUSD, 2))
WHEN lastPriceUSD < 1 THEN CONCAT('$', FORMAT(lastPriceUSD, 4))
END) as USDPrice
FROM assetList,
(SELECT @a := 0  ) AS a
WHERE volume_24h > 0 AND isActive = 'yes'
ORDER BY marketCap DESC
limit 200 offset 100

标签: mysql

解决方案


当你改变你的偏移量时,你需要改变初始化@a以匹配,所以offset 100你会使用

(SELECT @a := 100  ) AS a

代替

(SELECT @a := 0  ) AS a

推荐阅读