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

现在我想检索将从中开始的前 5 行,Neshren Luca以便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 >= that id。

编辑:或者,如果您的数据库保证自然顺序,则通过该值查找行 id/index 和 LIMIT/OFFSET。例如,SQLite 对每个表行都有内置的自然 rowid。

于 2013-01-26T11:02:24.723 回答
0

看起来上面的 select 语句可以正常工作..否则你必须做其他方式,但它会有点长..那个.. -> 你必须将上述记录放入游标 -> 循环游标和获取记录..

于 2013-01-26T11:04:44.397 回答