有时候一张表虽然设置了ID自增,但是经过一系列业务增删骚操作后自增的ID也不是那么有序,MySQL中又没有获取行号的函数,因此我们需要通过一些自定义语句来进行获取。
通常的做法是:通过定义自定义变量@rownum来保存表中的数据。通过赋值语句
@rownum:=@rownum + 1 来累加达到递增行号的需求
注意:@rownum 是自定义变量而不是Mysql的函数,所以名字是可以随便取的比如@adc@行号@rowNo
例如:SELECT@rownum := @rownum + 1 AS '排名',b.type,b.NAME,b.description FROMtbl_book b,( SELECT @rownum := 0 ) r
SQL执行结果:
后半部分语句的 ( SELECT @rownum := 0 ) r 相当于创建了别名为:r 的新表,其表的列为@rownum,数值为0;
这里注意 ( SELECT @rownum := 0 ) r* 必须加括号且取表别名 否则会报错
通过利用变量将@rownum的行进行重新赋值,并显示。可以应用于获取行号或名次排列。
通过Mysql CONCAT()函数连接字符串,也可以连接多个字段CONCAT(字段A,字段B,字段C) as ‘三个字段合为一个’
SELECTCONCAT( '你是第: ', @rownum := @rownum + 1, " 名" ) AS '排名',b.type,b.NAME,b.description FROMtbl_book b,( SELECT @rownum := 0 ) r
SQL执行结果:
来源地址:https://blog.csdn.net/m0_55646363/article/details/124477864