我有一个查询问题,即检索计数将从指定行开始的行数。这些是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
我该怎么做?
注意:我不会尝试根据行数检索行值,而是根据特定行值检索行。
答案 0 :(得分: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
答案 1 :(得分:0)
SQL引擎可能有一些“自然”行顺序,但不保证。你应该有主键,比如ID,然后是ORDER BY ID,找到你字符串的第一个ID。然后选择前N个项目WHERE ID> =该ID。
编辑:或者,如果您的数据库保证自然顺序,请通过此值查找行ID /索引和LIMIT / OFFSET。例如,SQLite为每个表行都有内置的自然rowid。
答案 2 :(得分:0)
看起来上面的select语句可以正常工作..另外明智的你必须做其他的方式,但它会有点冗长..那... - >您必须将上述记录放入游标中 - >循环光标并获取记录..