Mysql自定義變數的作用

2022-07-04 05:54:09 字數 1449 閱讀 8957

使用者自定義變數的宣告方法形如:@var_name,其中變數名稱由字母、數字、「.」、「_」和「$」組成。當然,在以字串或者識別符號引用時也

可以包含其他字元(例如:@』my-var』,@」my-var」,或者@my-var)。 

使用者自定義變數是會話級別的變數。其變數的作用域僅限於宣告其的客戶端鏈結。當這個客戶端斷開時,其所有的會話變數將會被釋放。

使用者自定義變數是不區分大小寫的。

使用set語句來宣告使用者自定義變數: 

set @my_var = 1; 

set @my_var := 1; 

不使用set時採用:=賦值,因為採用=可能被認為是比較操作符。 

以下用乙個案例說明: 

編寫乙個 sql查詢 來實現分數排名。如果兩個分數相同,則兩個分數排名(rank)應該相同。請注意,平局之後的下乙個排名數

應該是下乙個連續的整數值。換句話說,行列之間不應該有「漏洞」。

| id | score |

| 1 | 3.50 | 

| 2 | 3.65 | 

| 3 | 4.00 | 

| 4 | 3.85 | 

| 5 | 4.00 | 

| 6 | 3.65 |  

例如,根據給定的上述 scores 表,您的查詢應該生成以下報告(按最高分排序):

| score | rank |

| 4.00 | 1 | 

| 4.00 | 1 | 

| 3.85 | 2 | 

| 3.65 | 3 | 

| 3.65 | 3 | 

| 3.50 | 4 | 

查詢語句:

1

select score, @rank := @rank + (@pre <> (@pre:=score)) rank

2from scores ,(select @rank := 0,@pre:= -1

) init

3 order by score desc

注: @rank表示成績排名 

@pre表示上乙個人的分數 

當與上乙個分數不一樣時@rank = @rank + 1,否則,@rank=rank。 

將@rank初始化為1,@pre初始化為-1。 

結果為: 

另:將@i值迴圈自加,進行排名。

MySQL自定義變數

delimiter create function fun2 returns int begin set i 1 set sum 0 while i 10 do set sum sum i set i i 1 end while return sum end delimiter 全域性變數 deli...

Mysql自定義變數

全域性變數 使用set語句定義,對所有客戶端生效,以如下兩種形式定義,set global 變數名 或者 set global.變數名。只有具有super許可權才可以設定全域性變數。區域性變數與使用者變數的區分 所以,最後它們之間的層次關係是 變數包括區域性變數和使用者變數,使用者變數包括會話變數和...

mysql 使用者自定義變數

這裡面詳細的介紹了怎麼使用自定義變數 我這裡本是發出一些疑問 set rownum 0 select disease,rn,rownum,rownum rownum 1 as cmt from disease code where rownum 1 結果 disease rn rownum cmt ...