是否可以编写一条 SQL 语句,从条件为 Z 的列表中检索条件为 Y 的记录之后的 X 个连续记录?
例如,给定这个表:
id name
------------------------------
1 aaa
5 bbb
10 ccc
15 ddd
20 eee
25 fff
30 ggg
我首先应用标准 Z,比如
SELECT * WHERE (id>4) AND (id<26) ORDER BY id ASC
然后我得到一个列表:
id name
------------------------------
5 bbb
10 ccc
15 ddd
20 eee
25 fff
我想知道是否可以从 name='ddd'(或其他一些条件 Y)的列表中检索 2 条记录,即返回上例中的“ddd”和“eee”记录。
肯定可以直接在 SQL 中执行此操作,但恐怕我缺乏了解它的里程数。
最佳答案
SELECT *
FROM yourTable
WHERE id > 4
AND id < 26
AND id >= ( SELECT min(id)
FROM yourTable
WHERE id > 4
AND id < 26
AND name = 'ddd'
)
ORDER BY id
LIMIT 2
;
在你的措辞中:
SELECT *
FROM yourTable
WHERE ( criterionZ )
AND sortingField >=
( SELECT min(sortingField )
FROM yourTable
WHERE ( criterionZ )
AND ( criterionY )
)
ORDER BY sortingField
LIMIT X
;
关于mysql - SQL在指定记录后给出X记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344697/