0

在 SQL 中,我想按 pageNumber 顺序查询一个列表

SELECT * FROM `comics` 
WHERE 1
ORDER BY pageNumber ASC

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

这是我所需功能的伪代码;其中 list 是上面 Select Query 的返回值。

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 更新

很抱歉不清楚。我想我需要了解更多信息才能清楚我的问题:) 感谢您的所有帮助

4

2 回答 2

1
SET @I := 0;

  SELECT *,
         @I := @I + 1 AS newPageNumber
    FROM comics
ORDER BY pageNumber ASC
于 2011-02-09T01:08:47.840 回答
0

我不明白为什么人们坚持编写一个 SQL 批处理,而单个语句就可以了。

SELECT comics.*, @n := @n + 1 AS PageNumber2
FROM (SELECT @n := 0) X CROSS JOIN comics
ORDER BY pageNumber ASC
于 2011-02-09T01:33:28.267 回答