MySQL使用偽列


在查詢數據庫的時候,我們有時候需要對查詢出來的數據加上序列,1,2,3,……n

例如:我們根據表的某個字段排序后,要對這些數據加上序列,這個時候序號常常不是我們建表時設置好的自增的主鍵id,怎么辦呢????

可能我們會用變量來解決,如下

SET @rownum:=0;
SELECT @rownum:=@rownum+1 AS rownum,a.* FROM t_s_base_user a;

如果在數據庫中要用一句SQL語句來實現,這又改怎么辦呢????

oracle數據庫有專門的rownum來解決偽序列問題,但是mysql卻到目前為止還沒有內置的函數等來解決此問題

這個問題也困擾了我一段時間,到各種上發帖也沒有能回答,最后在無意間找到了這種解決方法

SELECT @rownum:=@rownum+1 AS rownum, t_s_base_user.* FROM (SELECT @rownum:=0) r, t_s_base_user

把rownum的設置初值放到了from 和需要查詢的表的前面

也許有人也會用到存儲過程來解決,那也是一個方法,我曾經也用過,但是后來不能用存儲過程了,就悲劇了

但是程序會報錯“Parameter '@rownum' must be defined.”

這時在配置文件數據庫鏈接串后面加上“Allow User Variables=True”,就好了

<!--mysql連接字符串-->         
<add key="MySqlConn" value="Server=192.168.1.238;DataBase=gm;Uid=root;Pwd=000000;Allow User Variables=True;"/>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM