mysql - SQL在指定记录后给出X记录

标签 mysql sql database

是否可以编写一条 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/

相关文章:

mysql - 选择整个数据库而不是单个表以输出到文件

php - 查询变量uri

php - 为每个查询编写一个 PHP 页面是一种很好的编程技巧吗?

mysql - 记录从特定表中删除,每次留下完全相同数量的记录 (54)

mysql - LEFT JOIN 的效率

mysql - 错误: OLE DB provider "MSDASQL' ' for Linked Server '' bequick'' was unable to begin a Distributed transaction

sql - 条件 CASE 语句语法

mysql - SQLfiddle错误号: 150 - Foreign Key Issue

database - 我如何在学说上使用 'foreign key'?

sql - SQL Server如何统计提交人数