gpt4 book ai didi

mysql 从特定行获取行

转载 作者:搜寻专家 更新时间:2023-10-30 20:28:51 25 4
gpt4 key购买 nike

我有一张这样的 table

+------------+
| Id| data |
|============|
| n | some_n |
| a | some_a |
| f | some_f |
| b | some_b |
+------------+

如果我只知道上一个 ID 行,是否有办法获取下一个“N”行?例如,我知道第二行 (a) 的 ID,我想从那里获取接下来的两行。查询将返回 {(f, some_f), (b, some_b)}

查询看起来像这样:

SELECT * FROM table WHERE [something] LIMIT start,numRows;

问题是……我如何知道起始值?我在 where 子句中放了什么?

最佳答案

SELECT t.* FROM table t WHERE t.Id > 'a' ORDER BY t.Id LIMIT 2;

表格中的行没有隐含的顺序;因此,如果没有 ORDER BY 子句,数据库可以自由地以任意顺序返回行。如果没有 ORDER BY,则无法保证后续查询不会返回先前返回的行。

因此,您知道“第二行”的 ID 值为 'a',这意味着已经应用了某种排序。我的示例查询假定行按 Id 列排序。

使用指定的排序,查询可以返回“下 N”行,使用谓词(WHERE 子句中的条件)指定仅返回“跟随”最后检索值的行。 LIMIT 子句在行排序后应用,这样我们就可以保证获得“接下来的 N 行”(按顺序排列。)

更一般的形式,如果行是根据唯一键以外的东西排序的,则需要稍微复杂一点的谓词来处理相等条件,其中要检索的下一行的值与上次检索的值匹配...

SELECT t.*
FROM table t
WHERE ( t.col = last_col_value_retrieved AND t.id > last_id_value_retrieved )
OR ( t.col > last_col_value_retrieved )
ORDER BY t.col, t.id
LIMIT 50

关于mysql 从特定行获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com