go的音标在mysql中给查询的结果添加序号列龙头节
⼀.发现问题:
昨天同事问我如何在mysql中给查询的结果添加序号列。⼀时有点懵逼,⽹上搜索答案,找到以下信息:
⼆.解决⽅案:
吾家有儿1.法⼀:
lect (@i:=@i+1) i,a.url from ba_api_resources a ,(lect @i:=0) t2 order by a.id desc limit 10;
2.法⼆:
t @rownum=0;
利导
不时之需的意思lect @rownum:=@rownum+1 as rownum, a.url from ba_api_resources a order by a.id desc limit 10
牛郎与织女的故事上述两种⽅法原理就是,事先定义⼀个变量,通过变量的递加以及虚拟表的联查达到⽣成序号列的⽬的。
三.延伸
上述⽅法本来是对着⽹上照猫画虎写出来的,疑点有两个:1.@i:=是什么意思?2.lect * from table1,table2--两表之前放个,是什么意思?致自己短句
萌萌图片
第⼀种⽤法:t @i=1; 或t @i:=1; //这⾥要使⽤变量来保存数据,直接使⽤@num变量
第⼆种⽤法:lect @i:=1; 或 lect @i:=字段名 from 表名 where …
注意上⾯两种赋值符号,使⽤t时可以⽤“=”或“:=”,但是使⽤lect时必须⽤“:=赋值”
2.第⼆个问题涉及到的就是mysql多表查询:
lect* from table1,table2 不加任何条件的话,是把两个表的数据笛卡尔积之后显⽰。仔细观察法⼀的sql就会发现 t2表其实就⼀条i=0的数据