如何使Mysql自動(dòng)生成序號(hào)列,序號(hào)自動(dòng)增長(zhǎng)問題
Mysql自動(dòng)生成序號(hào)列,序號(hào)自動(dòng)增長(zhǎng)
在Oracle中有ROWNUM 這個(gè)功能,可以很方便的得到序列號(hào)。
但是Mysql中始終沒有實(shí)現(xiàn)這個(gè)功能的函數(shù),那當(dāng)我們需要的時(shí)候該怎么處理呢?
使用Msyql的自定義變量
1.自定義變量放在FROM后面
使用 @var 定義變量 ,這個(gè)變量定義是基于connection的。
也就是當(dāng)連接斷開重連的時(shí)候,@var中的值會(huì)被清空,因此我們最好每次都給它一個(gè)初始值。
SELECT @i:=@i+1 AS '序號(hào)' , a.name FROM AREA a,(SELECT @i:=5) i?
變量 @i :
- 在SELECT 得到每一行結(jié)果集都會(huì)先自增1 ;
- 在FROM 后面的(SELECT @i:=5) 每次sql執(zhí)行都會(huì)初始化變量@i的值為5 。
2.自定義變量放在WHERE后面
其實(shí)這個(gè)變量的初始化值并不一定非要放在FROM后面,也可以像下面這樣。
這是由于 sql的執(zhí)行順序決定的,在select 執(zhí)行前 初始化變量即可 。
SELECT @a:=@a+1 AS '序號(hào)' , a.name FROM AREA a WHERE (SELECT @a:=5)
區(qū)別
在 WHERE 后面使用變量的時(shí)候, 不能初始化賦值0(WHERE (SELECT @a:=0)) ,這個(gè)是因?yàn)?在 WHERE 后面被認(rèn)為是 false 。這樣不能搜索到任何結(jié)果。
Mysql存儲(chǔ)過程生成編號(hào)自增
例如
編號(hào)1,2,3,4,5…n依次遞增1
CREATE PROCEDURE khbh1(out khbh varchar(255)) begin DECLARE n int; declare lsh int; – 查詢系統(tǒng)流水表中有多少條數(shù)據(jù) select count(*) into n from SKT176; – 如果為0,把1賦值給流水號(hào),再將系統(tǒng)編號(hào)插入進(jìn)系統(tǒng)流水表中。否則查詢系統(tǒng)流水表中最大的起始編號(hào),依次往上+1 IF n=0 then set lsh =1; insert into 系統(tǒng)流水表(起始編號(hào)) values(lsh); else select Max(起始編號(hào)) INTO lsh from 系統(tǒng)流水表; SET lsh=lsh+1; update 系統(tǒng)流水表 SET 起始編號(hào)=lsh where id=1; end if; – 輸出編號(hào)1,2,3,4,5,6… set khbh=lsh; end;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL使用正則表達(dá)式來更好地控制數(shù)據(jù)過濾
MySQL中的正則表達(dá)式是一種強(qiáng)大的數(shù)據(jù)過濾工具,它允許用戶以靈活的方式匹配和搜索文本數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于MySQL使用正則表達(dá)式來更好地控制數(shù)據(jù)過濾的相關(guān)資料,需要的朋友可以參考下2024-08-08
MySQL數(shù)據(jù)更新操作的兩種辦法(數(shù)據(jù)可視化工具和SQL語(yǔ)句)
MySQL是最常用的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)操作中,基本都是增刪改查操作,簡(jiǎn)稱CRUD,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)更新操作的兩種辦法,需要的朋友可以參考下2023-03-03
MYSQL??group?by?有哪些注意事項(xiàng)
這篇文章主要介紹了MYSQL??group?by?有哪些注意事項(xiàng),比如我們不能在?group?by?之后添加?where?查詢語(yǔ)句,更多相關(guān)分享,需要的朋友可以參考下面文章內(nèi)容2022-07-07
phpmyadmin報(bào)錯(cuò):#2003 無法登錄 MySQL服務(wù)器的解決方法
通過phpmyadmin連接mysql數(shù)據(jù)庫(kù)時(shí)提示:“2003 無法登錄 MySQL服務(wù)器”。。。很明顯這是沒有啟動(dòng)mysql服務(wù),右擊我的電腦-管理-找到服務(wù),找到mysql啟動(dòng)一下2012-04-04
mysql database manual(mysql數(shù)據(jù)庫(kù)手冊(cè))
mysql database manual(mysql數(shù)據(jù)庫(kù)手冊(cè)),使用mysql的朋友可以參考下。2011-09-09

