1

SQL Serverで以下のコードを使用してインデックスiからjまでの行を選択できます。mysqlでそれを行う方法は?

select * from 
  (SELECT  ROW_NUMBER() OVER (ORDER BY FieldName asc) as row,
  * from TableName) 
WHERE row between STARTINDEX AND ENDINDEX
4

1 に答える 1

1

私はSQLに精通していないので、質問を完全に正しく理解したかどうかわかりません.FieldNameで結果を並べ替え、作成した行番号に基づいて結果の一部を選択したいとします. MySQL では次のように記述します。

SELECT *
FROM TableName
ORDER BY FieldName ASC
LIMIT STARTINDEX-1, ENDINDEX-STARTINDEX

MySQL LIMIT インデックスではゼロから始まり (SQL コードでは 1 から)、LIMIT 句の他の数値は、取得したいレコードの数です。

編集:結果に行番号がありませんでした。結果に行番号が必要な場合は、次のようになります。

SET @num = STARTINDEX-1;
SELECT @NUM := (@NUM + 1) AS row, TableName.*
FROM TableName
ORDER BY FieldName ASC
LIMIT STARTINDEX-1, ENDINDEX-STARTINDEX

STARTINDEX は最初の行の番号と同じです。これは、SELECT が最初でも @NUM に 1 を追加するためです。

于 2012-12-02T06:06:09.247 に答える