mysqlrownumber()用法为:ROW_NUMBER()OVER(partition_definitionorder_definition)。具体可分为:1)为行分配序号。以下语句使用ROW_NUMBER()函数为products表中的每一行分配一个序号:
SELECT
ROW_NUMBER()OVER(
ORDERBYproductName
)row_num,
productName,
msrp
FROM
products
ORDERBY
productName;
2)找到每组的前N行。你可以将ROW_NUMBER()功能用于查找每个组的前N行的查询。3)删除重复的行。你可以使用ROW_NUMBER()它将非唯一行转换为唯一行,然后删除重复行。4)使用ROW_NUMBER()函数分页。因为ROW_NUMBER()为结果集中的每一行指定一个唯一的数字,所以可以将其用于分页。
MySQLROW_NUMBER()使用会话变量
我们可以模拟ROW_NUMBER()函数,使用会话变量按递增顺序添加行号。
执行以下语句,为每行添加行号,从1开始:
SET
row_number=0;SELECTName,Product,Year,Country,
(
row_number:=row_number+1)ASrow_numFROMPersonORDERBYCountry;
在此语句中,我们首先指定
prfix指示的会话变量row_number并将其值设置为0。然后,我们从表Person中选择数据,并将变量row_number的值每行增加1。同样,我们将使用会话变量作为表并使用以下语句将其与源表交叉连接:
SELECT(
row_number:=row_number+1)ASrow_num,Name,Country,YearFROMPerson,(SELECT
row_number:=0)AStempORDERBYYear;