sql语句里如何实现给查询记录添加自然序号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql语句里如何实现给查询记录添加自然序号?相关的知识,希望对你有一定的参考价值。

表a,数据:
id name
12 张三
13 李四
15 王五

想通过一条sql语句(mysql和sqlite里)实现获取这三条记录(假设该表不只有这三条记录),并且给每行前面加上从1开始的序号,变成
1 12 张三
2 13 李四
3 14 王五

请教

通过rownum实现即可。
sql:select rownum , * from tablename where 条件语句。
解释:rownum是隐藏的,查询结果默认从1开始编号,所以肯定会是自然编号的,有多少条,编号就到多少。
参考技术A select Row_NUMBER() OVER (ORDER BY a.id ASC)AS 序号,a.* from table a

或者:
select RANK() OVER (ORDER BY a.id ASC )AS 序号,a.* from table a

table写表名。追问

不行,在mysql 查询里运行不过,请问这是哪个数据库的语法?我希望是mysql或者sqlite的

追答

SQL Server 2008

追问

求mysql 或sqlite的语句,谢谢

参考技术B SELECT @rownum:=@rownum+1 AS rownum, a.*
FROM (SELECT @rownum:=0) r, a;
参考技术C select (@rowNO := @rowNo+1) AS rowno,username,cardnum from (SELECT username,cardnum FROM t_consumer where 1=1) a,(select @rowNO :=0) b

参考资料:http://blog.csdn.net/macwhirr123/article/details/7489484

参考技术D 添加字段,使用自动增长追问

中间删除某行数据,但是最后select出来的还要求是 1,2,3顺序数字。
你想的太简单了。

如何查找MySQL中查询慢的SQL语句

参考技术A 1、首先,要开启mysql的慢查询日志。在mysql的配置文件:my.ini中添加如下两个配置项:
log-slow-queries = E:\Servers\MySql5.5\data\mysql_slow_query.log //mysql慢查询日志记录位置
long_query_time=5 //定义慢查询sql的时间,当前配置表示超过5秒的sql为慢查询,进入到日志里
2、查询慢查询日志
找到配置的慢查询日志文件,如E:\Servers\MySql5.5\data\mysql_slow_query.log ,这里就是所有的慢查询sql啦
参考技术B

这是一个慢查询日志的展示工具,能够帮助 DBA 或者开发人员分析数据库的性能问题,给出全面的数据摆脱直接查看 slow-log。QAN(Query Analytics)

PMM 目前有 2 个版本,但是对于 QAN 来说其大致由三部分组成:

QAN-Agent(client):负责采集 slow-log 的数据并上报到服务端

QAN-API(server):负责存储采集的数据,并对外提供查询接口

QAN-APP:专门用来展示慢查询数据的 grafana 第三方插件


1. 数据流转

slow-log --> QAN-Agent --> QAN-API <--> QAN-APP(grafana)

2. pmm1 架构图

3. pmm2 架构图

以上是关于sql语句里如何实现给查询记录添加自然序号?的主要内容,如果未能解决你的问题,请参考以下文章

问一个sql查询,如何给查询结果加上序号

函数编写 SQL 如何给记录加序号

一个事务中多条查询sql是取最新数据吗

SQL语句查询结果额外加入一列序号自己主动添加

如何在sql的查询结果中加入序号

access 数据库 添加序号语句