2011-02-09 1 views
0

は、私は、クエリでのインデックスに基づいて、そのpageNumbersを設定したいと思い、SQLループと設定されたプロパティ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 
    } 
} 

私はpageNumbersが5, 17, 23, 24, 18, 7

PAGENUMBER ASC BY ORDERが5, 7, 17, 18, 23, 24

にこれをソートしますたかもしれない私は、1, 2, 3, 4, 5, 6

編集するために、pageNumbersを変更したいです:

@fortheworld MySQL

@cyberkiwi UPDATE

ご迷惑をおかけして申し訳ございません。 peopsは、単一の文がどうなるSQLバッチを書くことを主張する理由私の質問には明確な:)私は理解していないすべてのあなたの助け

+0

質問がmysql固有の場合は、適切なタグを追加してください。さまざまなrdbmsが異なるソリューションを提供できるためです。 – zerkms

+0

あなたはどのSQLサーバの変種を使用していますか? MSSQL、MySQL、Postgre? –

+0

UPDATEクエリが必要ですか?または、ちょうどそこに何かの代わりにギャップのない1,2,3 ..Nを示すPageNumberの列を持つSELECTクエリ。 'comic'の他の列をリストアップしてください – RichardTheKiwi

答えて

1
SET @I := 0; 

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

ため おかげであるために、私はより多くを学ぶ必要があると思います。

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