SQLite 数据库的 row_number() 函数可以用来生成一个序列,其中包含从 1 开始的整数。它可以在一个 SELECT 语句的结果集中使用,以便每一行都有一个独一无二的行号。
关键字 OVER 可以用来指定这个函数应用于哪些行。例如,你可以使用 OVER() 语句来让 row_number() 函数应用于所有行,也就是说它会对整个结果集中的所有行生成一个序列。
PARTITION BY 关键字可以用来将结果集分成多个分区,并为每个分区生成独立的序列。例如,你可以使用 PARTITION BY column_name 语句将结果集按照 column_name 列的值进行分区,然后对每个分区使用 row_number() 函数生成序列。
例如,假设有一个名为 "customers" 的表,其中包含以下数据:
id name city
1 Alice New York
2 Bob London
3 Alice Paris
4 Eve New York
5 Alice London
6 Bob Paris
7 Eve London
你可以使用如下的 SELECT 语句来使用 row_number() 函数:
SELECT
row_number() OVER (PARTITION BY city ORDER BY name) AS row_num,
name, city
FROM customers;
这个语句会对每个城市分别生成一个序列,并且按照 name 列的值对每个分区进行排序。执行这个语句后,会得到以下的结果:
row_num name city
1 Alice London