Mysql 查询结果带⾏号【带解析】
百家乐玩法
先看结论:
SELECT @rowNum:=@rowNum + 1 AS ‘⾏号’,a.* FROM tableName a,(SELECT @rowNum:=0) b
然后逐步解析
我们假设有⼀张这样的表Teacher,⾥⾯有4条数据如下 先看这条sql
夫妇英语结果只有⼀个常数0
因为@rowNum:=0的意思是声明了⼀个叫rowNum的变量并赋值为0然后看这条sql 这是最简单的两表连接,由于b表只有⼀条数据,那么结果就如图上所⽰,拿b表的唯⼀的数据0,和a表中的4条数据挨个组合就⾏了SELECT @rowNum:=0;斑马线的英文
SELECT b.*,a.* FROM Teacher a,(SELECT @rowNum:=0) b;
新年第一缕阳光OK,我们离最终的解决⽅案很近了
那就是这条sql
SELECT @rowNum:=@rowNum + 1AS'⾏号',a.* FROM Teacher a,(SELECT @rowNum:=0) b;
对⽐上⼀条sql,会发现b.*变成了@rowNum:=@rowNum + 1,推演⼀下两表连接过程:
8月4日
风味绝佳
东江画廊1.a表拿出第⼀条数据(1,’叶平’),@rowNum:=@rowNum + 1的意思是对rowNum这个变量+1并赋值给rowNum。还记得rowNum最初被赋值为多少么?没错,0,因此这⾥rowNum就变成了1,第⼀⾏结果就变成了(1,1,’叶平’)
2.a表拿出第⼆条数据(2,’贺⾼’),@rowNum:=@rowNum + 1执⾏后rowNum就变成了2,第⼆⾏结果就是(2,2,’贺⾼’)
……
美国华人数量
嗯,不再赘述,就是这样。利⽤⾃定义的变量作为⼀个桥梁,在表连接过程中每⾏加⼀,就得到了⾏序号。