如何让Mysql查询结果带行号 偏执的太偏执、 2022-12-25 11:52 148阅读 0赞 如何让Mysql查询结果带行号 学习备查,转:[https://blog.csdn.net/lili625/article/details/80252420][https_blog.csdn.net_lili625_article_details_80252420] 先看结论: SELECT @rowNum:=@rowNum + 1 AS ‘行号’,a.\* FROM tableName a,(SELECT @rowNum:=0) b 然后逐步解析 我们假设有一张这样的表Teacher,里面有4条数据如下 ![这里写图片描述][70] 先看这条sql SELECT @rowNum:=0; * 1 ![这里写图片描述][70 1] 结果只有一个常数0 因为@rowNum:=0的意思是声明了一个叫rowNum的变量并赋值为0 然后看这条sql SELECT b.*,a.* FROM Teacher a,(SELECT @rowNum:=0) b; * 1 ![这里写图片描述][70 2] 这是最简单的两表连接,由于b表只有一条数据,那么结果就如图上所示,拿b表的唯一的数据0,和a表中的4条数据挨个组合就行了 OK,我们离最终的解决方案很近了 那就是这条sql SELECT @rowNum:=@rowNum + 1 AS '行号',a.* FROM Teacher a,(SELECT @rowNum:=0) b; * 1 ![这里写图片描述][70 3] 对比上一条sql,会发现b.\*变成了@rowNum:=@rowNum + 1,推演一下两表连接过程: 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,’贺高’) …… 嗯,不再赘述,就是这样。利用自定义的变量作为一个桥梁,在表连接过程中每行加一,就得到了行序号。 [https_blog.csdn.net_lili625_article_details_80252420]: https://blog.csdn.net/lili625/article/details/80252420 [70]: /images/20221120/86cbab47c9f349ec94bee1785590b678.png [70 1]: /images/20221120/68bcb51a2e67463abf58ff5f14563073.png [70 2]: /images/20221120/25351f8fdab743e092818e9e418384b9.png [70 3]: /images/20221120/25e342d1d4604b339ab7b8aaf6915967.png
还没有评论,来说两句吧...