參照部落格:mysql新增序號列
sql生成序號列的四種方式
mysql:
select (@i:=@i+1) from (select @i:=0) rank
,可以修改i
的值改變序列的起始值。
以下兩種方式本質相同。
--方式一:需給( select @i:=0 )加別名
select birth_date,
(@i:=@i+
1)as rank from employees,
(select
@i:=
0) b order
by birth_date desc
;--方式二:該兩個語句需同時執行。不能分次執行。
有四個函式可以達到新增序列號的目的:
row_number、rank、dense_rank、ntile
:詳見推薦的部落格
以給學生成績排序為例。有乙個表如下,根據成績大小排名。
1、根據成績大小排名:可以知道,row_number() over(order by grade desc)
,能依據成績從大到小排名,但分數相同的學生排名卻不同。
2、根據成績大小排名:rank() over(order by grade desc)
,能使成績相同的排名相同,但序號會跳躍,如下結果表中第2名並沒有數字顯示。
3、根據成績大小排名:dense_rank() over(order by grade desc)
,成績相同的序號相同,且序號會依次遞增。
4、根據成績大小排名:ntile(4) over(order by grade desc)
,按成績從大到小,分為4組。
Mysql對查詢結果新增序列號
set rownum 0 select rownum rownum 1 as rownum,from table1 和 的區別?只有在set和update時才和 一樣,賦值的作用,其它都是等於的作用。鑑於此,用變數實現行號時,必須用 不只在set和update時時賦值的作用,在select也是賦值的...
Oracle表中序列號的新增
一 oracle資料庫中 為某一table新增序列號 自增號 必須先建立序列。create sequence userid seq minvalue 1 初始序號為1 maxvalue 不設最大序號,這裡也可以設定 start with 20 從20開始計算 increment by 1 每次增1 ...
Oracle給查詢結果增加序列號
在oracle中,需要加乙個序列號,首先想到是用rownum這個關鍵字,比如sql如下 select rownum,t.from table t以上sql如果不增加排序,這個資料沒有問題,一旦增加排序,序列號就錯亂了 select rownum,t.from table t order by t.s...