📜  奇数记录 sql 查询 - SQL (1)

📅  最后修改于: 2023-12-03 15:23:45.058000             🧑  作者: Mango

奇数记录 SQL 查询

在进行数据库查询时,我们可能需要筛选出某列中序号为奇数的记录。这时候我们可以使用 ROW_NUMBER() 函数,结合取余符号 % 来实现。

语法
SELECT *
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY {排序字段}) AS rn, *
    FROM {表名}
) AS sub_query
WHERE rn % 2 = 1
参数说明
  • {表名}:需要查询的表名
  • {排序字段}:用于排序的字段名
  • rnROW_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() 函数和取余符号 % 可以方便地筛选出某个表中序号为奇数的记录。这种方法可以应用于各种类型的表格数据筛选中。