新增序列號(結果表加序列)MySQL Oracle

2021-10-09 21:27:32 字數 2122 閱讀 6226

參照部落格: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...