sql循环和设置属性

时间:2011-02-09 01:03:47

标签: mysql for-loop row-number

在SQL中,我想按pageNumber

的顺序查询列表
SELECT * FROM `comics` 
WHERE 1
ORDER BY pageNumber ASC

然后,我想根据查询中的索引设置pageNumbers(从1开始而不是0)。

这是我想要的功能的伪代码;其中list是上面选择查询的返回值。

for(var n:int = 0; n<list.length; n++){
    if(list[n].pageNumber != n+1){
        list[n].pageNumber = n+1
    }
}

例如,我可能有pageNumbers 5, 17, 23, 24, 18, 7

ORDER BY pageNumber ASC会将其排序为5, 7, 17, 18, 23, 24

然后我想改变pageNumbers以便成为1, 2, 3, 4, 5, 6

编辑:

@fortheworld MySQL

@cyberkiwi UPDATE

抱歉不清楚。我想我需要了解更多我的问题要清楚:) 谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

SET @I := 0;

  SELECT *,
         @I := @I + 1 AS newPageNumber
    FROM comics
ORDER BY pageNumber ASC

答案 1 :(得分:0)

我不明白为什么peops坚持在单个语句执行时编写SQL批处理。

SELECT comics.*, @n := @n + 1 AS PageNumber2
FROM (SELECT @n := 0) X CROSS JOIN comics
ORDER BY pageNumber ASC
相关问题