假如有一个表
AT(int index,int a,int b)
我每天要根据表中的a的大小对整个表进行排序 并把每条数据的排名写入该数据的b里
如
1 8 0
2 4 0
3 12 0
4 12 0
5 3 0
处理后 变为
1 8 3
2 4 4
3 12 1
4 12 2
5 3 5
如何实现? 我用的是php做网站 用php有什么高效的实现之法?
AT(int index,int a,int b)
我每天要根据表中的a的大小对整个表进行排序 并把每条数据的排名写入该数据的b里
如
1 8 0
2 4 0
3 12 0
4 12 0
5 3 0
处理后 变为
1 8 3
2 4 4
3 12 1
4 12 2
5 3 5
如何实现? 我用的是php做网站 用php有什么高效的实现之法?
解决方案 »
- 求助~show processlist中的连接数一直在增加
- 查询任意日期同一周的记录语句
- MySQL新手,存储过程问题老是报错,请高手帮忙解答一下为什么?急!!!
- 根据一个表转换成另一个表
- 账户余额表结构
- 在mysql中怎么样更有效的实现多个数据库的数据统计?急!
- JDBC CONNECTION???????????????????????????????????????????///
- 100分! mysql不能启动,能帮我解决吗?
- mysql数据库一张表中近千万条数据查询问题
- 请大佬帮帮忙
- 请问postgreSQL C库(libpq)或C++库(libpq++)中有无数据库备份和恢复的接口?
- 一个用于先select出id,再根据id进行update的语句,出错了
as select @i:=@i+1 as rowid,a from AT order by a desc, 'index' asc;update AT inner join tb_temp on AT.a=tb_temp.a
set AT.b=tb_temp.rowid;
as select @i:=@i+1 as rowid,a from AT order by a desc, `index` asc; update AT inner join tb_temp on AT.a=tb_temp.a
set AT.b=tb_temp.rowid;
CREATE PROCEDURE p14 ()BEGINDECLARE v INT;SET v = 1;WHILE v < (select count(*) from AT) DOUPDATE AT SET b=v WHERE a=@var1;SET v = v + 1;END WHILE;END;
写法1:
select *,(select count(*)+1 from AT b1 where b1.a<a1.a) as rownum from AT a1写法2:
set @i=0;
select *,@i:=@i+1 as rownum from AT order by a desc, `index` asc;
select *,(select count(*)+1 from AT b1 where b1.a <a1.a) as rownum from AT a1 写法2:
set @i=0;
select *,@i:=@i+1 as rownum from AT order by a desc, `index` asc;
Why is it not correct?