mysql - 从一组中选择多个离散记录,如 LIMIT

标签 mysql sql

假设我有一个问题

SELECT *
FROM foo
ORDER BY id

我想要第 1 个、第 5 个、第 100 个、第 250 个结果等。

SELECT *
FROM foo
ORDER BY id
LIMIT 5, 1

给你第 5 个。我可以运行 N 次类似的查询。但是,我怎样才能在一个查询中更优雅地做到这一点?

像这样的东西(它不起作用)会很棒!

 LIMIT 1, 5, 100, 250

最佳答案

一种方式是 ROW_NUMBER (MySQL 8.0):

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(ORDER BY id) AS rn FROM foo) sub
WHERE rn IN (1, 5, 100, 250)
ORDER BY rn;

关于mysql - 从一组中选择多个离散记录,如 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57647262/

相关文章:

php - 当 mysql 服务器启动/重新启动时运行更新/删除查询?

sql - 加入多个选择查询 SQL

python - 使用 python 脚本填充数据库

sql - 从表数据创建动态列

mysql - 使用mysql重叠间隔

mysql - SQL 查询查找拥有未发布应用程序的用户

mysql - SQLHeavy for MySQL/PostgreSQL - 从哪里开始

mysql - 关闭 ONLY_FULL_GROUP_BY 是个好主意吗?

java - 如何将列表添加到 SQL 数据库(使用 java)

php - 如何使用mysql查询的结果作为另一个查询的列名