1

指定された行からカウントが開始される行数の取得に関するクエリの問題があります。これらは、MySQL データベースの行の値です。

John Parker
Tony Graham
Perter Smith
Annabelle Sergio
Kris Pata
Neshren Luca
Paul Pon
Zervich Nuckrav
Allan Paulson
Imanu Hashmarida
Varick Dagovich
Senster Burgsman
Lito Umani
Ramsay Nudillo

Neshren Lucaここで、次のようになるように、最初の 5 行を取得したいと思いますresultset

Neshren Luca
Paul Pon
Zervich Nuckrav
Allan Paulson
Imanu Hashmarida

どうすればいいですか?

:行の数に基づいて行の値を取得しようとするのではなく、特定の行の値に基づいて取得しようとします。

4

3 に答える 3

2

これは非常に見栄えが悪いですが、これを試してみてください。これはローカル変数を使用します

SET @selectedName := 'Neshren Luca'; -- set the name here
SET @selectRow :=
          (
            SELECT RankNo
            FROM
                (
                    SELECT @rowNum := @rowNum + 1 AS RankNo,
                           a.Names
                    FROM   tableName a, (SELECT @rowNum:= 0) b
                ) x
            WHERE  Names = @selectedName
          );

SELECT Names
FROM
  (
    SELECT @rowNum1 := @rowNum1 + 1 AS RankNo, a.Names
    FROM   tableName a, (SELECT @rowNum1:= 0) b
  ) x
WHERE  RankNo BETWEEN @selectRow AND @selectRow + 4
于 2013-01-26T11:15:26.253 に答える
0

SQL エンジンには「自然な」行順序がある場合がありますが、保証されていません。主キー、たとえば ID、次に ORDER BY ID が必要です。文字列がどこにあるか最初の ID を見つけます。次に、最初の N 個の項目 WHERE ID >= その ID を選択します。

編集: または、データベースが自然な順序を保証する場合は、この値で行 ID/インデックスと LIMIT/OFFSET を見つけます。たとえば、SQLite にはテーブルの行ごとに自然な行 ID が組み込まれています。

于 2013-01-26T11:02:24.723 に答える
0

上記のselectステートメントはそのためにうまくいくように見えます..そうでなければ、他の方法を実行する必要がありますが、少し長くなります..->上記のレコードをカーソルに取得する必要があります->カーソルをループしてレコードを取得..

于 2013-01-26T11:04:44.397 に答える