在mysql中給查詢的結果添加序號列


一.發現問題:

昨天同事問我如何在mysql中給查詢的結果添加序號列。一時有點懵逼,網上搜索答案,找到以下信息:

二.解決方案:

1.法一:

select  (@i:=@i+1)  i,a.url from  base_api_resources a  ,(select   @i:=0)  t2 order by a.id desc limit 10;

2.法二:

set @rownum=0;
select @rownum:=@rownum+1 as rownum, a.url from base_api_resources a order by a.id desc limit 10

上述兩種方法原理就是,事先定義一個變量,通過變量的遞加以及虛擬表的聯查達到生成序號列的目的。

三.延伸

上述方法本來是對着網上照貓畫虎寫出來的,疑點有兩個:1.@i:=是什么意思?2.select * from table1,table2--兩表之前放個,是什么意思?

1.mysql中變量不用事前申明,在用的時候直接用@變量名”使就可以了。

   第一種用法:set @i=1; 或set @i:=1; //這里要使用變量來保存數據,直接使用@num變量

   第二種用法:select @i:=1; 或 select @i:=字段名 from 表名 where …

 注意上面兩種賦值符號,使用set時可以用“=”或“:=”,但是使用select時必須用“:=賦值”

2.第二個問題涉及到的就是mysql多表查詢:

select* from table1,table2 不加任何條件的話,是把兩個表的數據笛卡爾積之后顯示。仔細觀察法一的sql就會發現 t2表其實就一條i=0的數據

 


免責聲明!

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



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