2011-02-09 41 views
0

在SQL,我想通过PAGENUMBER查询列表,以便SQL循环和设置属性

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

然后,我想根据自己的查询索引设置自己的页面编号(从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 
    } 
} 

比如我可能有页面编号5, 17, 23, 24, 18, 7

的ORDER BY PAGENUMBER ASC将整理这5, 7, 17, 18, 23, 24

然后我想改变页面编号,以成为1, 2, 3, 4, 5, 6

编辑:

@fortheworld MySQL

@cyberkiwi UPDATE

遗憾的是目前还不清楚。想我需要了解更多我的问题是明确的:) 感谢所有帮助

+0

如果您的问题是特定于mysql的 - 请添加相应的标记,因为不同的rdbms可以提供不同的解决方案。 – zerkms 2011-02-09 01:11:25

回答

1
SET @I := 0; 

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

我不明白为什么PEOPS坚持写一个SQL批处理时,一个语句就可以了。

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