MySQL中給每個(gè)分組求序列可以使用ROW_NUMBER()函數(shù)。這個(gè)函數(shù)會(huì)為每個(gè)分組中的行按照指定方式排序并分配一個(gè)序號(hào)。
SELECT *, ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY sort_column) as row_num FROM table_name;
其中,group_column是分組依據(jù)的列,sort_column是排序依據(jù)的列。ROW_NUMBER()函數(shù)會(huì)把每個(gè)分組中的行按照sort_column排序,并為每個(gè)分組分配一個(gè)序號(hào)。
舉個(gè)例子,如果要為一個(gè)學(xué)生表中每個(gè)班級的成績按照分?jǐn)?shù)從高到低排序并分配序號(hào):
SELECT student_name, class_name, score, ROW_NUMBER() OVER (PARTITION BY class_name ORDER BY score DESC) as rank FROM student_table;
這個(gè)語句會(huì)返回每個(gè)學(xué)生的姓名、班級、分?jǐn)?shù)和排名。
下一篇mysql %和_