0 这是个老话题了
创新互联主营射阳网站建设的网络公司,主营网站建设方案,APP应用开发,射阳h5小程序设计搭建,射阳网站营销推广欢迎射阳等地区企业咨询
set @rownum=0;
select a.*, b.*, @rownum := @rownum +1 as rownum from a, b;
1 缺点:每次调用前需设置 set @rownum=0; 否则在请求的同一次会话中,这个值会累加。
alter table abc add num int unsigned auto_increment
如果同时为主键的话,可以这样写
alter table abc add num int unsigned primary key auto_increment
__________________________________________
to:数据库强者 不ok
需要用row_number来给分组添加序号。
1、创建测试表,插入数据:
create table test(sid int,sname varchar(20),sclass varchar(20),score int); insert into test values (1,'张三','一年一班',100)insert into test values (2,'李四','一年一班',78)insert into test values (3,'王五','一年一班',67)insert into test values (4,'赵六','一年一班',87)insert into test values (5,'badkano','一年二班',98)insert into test values (6,'百度知道团长','一年二班',99)insert into test values (7,'du小小动','一年二班',99)insert into test values (8,'刘备','一年三班',56)insert into test values (9,'张飞','一年三班',67)insert into test values (10,'关羽','一年三班',76)
2、要求按照班级总分给出班级排名(即序号),执行语句:
1
select row_number() over (order by score desc) 排名,sclass 班级,score 总分 from (select sclass,SUM(score) score from test group by sclass) t
3、查询结果:
select a.*,
(select count(*) from tbl where col=a.col) as rownum
from tbl a;
mysql 没有oracle里面的rownum函数,用这个sql可以模拟下,但是如果数据量大的话,可能执行很慢。