📅  最后修改于: 2023-12-03 15:23:45.058000             🧑  作者: Mango
在进行数据库查询时,我们可能需要筛选出某列中序号为奇数的记录。这时候我们可以使用 ROW_NUMBER()
函数,结合取余符号 %
来实现。
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY {排序字段}) AS rn, *
FROM {表名}
) AS sub_query
WHERE rn % 2 = 1
{表名}
:需要查询的表名{排序字段}
:用于排序的字段名rn
:ROW_NUMBER()
函数生成的行号rn % 2 = 1
:取余符号 %
,用于筛选出奇数行号的记录假设我们有一个学生表 student
,如下所示:
| id | name | age | gender | class | | ---- | ---- | --- | ------ | ------ | | 1 | Tom | 18 | M | Class1 | | 2 | Jack | 19 | M | Class2 | | 3 | Lucy | 17 | F | Class2 | | 4 | Lily | 18 | F | Class1 | | 5 | Bob | 19 | M | Class3 |
我们需要筛选出所有序号为奇数的记录,以下是查询语句:
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY id) AS rn, *
FROM student
) AS sub_query
WHERE rn % 2 = 1
查询结果为:
| rn | id | name | age | gender | class | | ---- | ---- | ---- | --- | ------ | ------ | | 1 | 1 | Tom | 18 | M | Class1 | | 3 | 3 | Lucy | 17 | F | Class2 | | 5 | 5 | Bob | 19 | M | Class3 |
使用 ROW_NUMBER()
函数和取余符号 %
可以方便地筛选出某个表中序号为奇数的记录。这种方法可以应用于各种类型的表格数据筛选中。