排行榜的问题,上升及下降排名如何设置?现在有一个问题,我有一个榜单数据,每天都会排出来一次
譬如,表table1account | value1 | Order
------------------------
bbb 30 1
ccc 15 2
aaa 10 3
第二天又会排出一个名次,还是表table1,即把昨天覆盖了account | value1 | Order
------------------------
aaa 40 1
bbb 30 2
ccc 15 3
因为account每天消费的值不一样,所以Order会变化。
***********************************************
******************* 问题来了 ******************
***********************************************
我如何得到account上升的名次?account | OrderChanged
------------------------
aaa +2
bbb -1
ccc -1
因为我每次排榜的时候都会将之前的覆盖,所以以前的没有了。所以我的想法是:在table1中加一个字段,然后通过临时表来保存上一个表,最后计算出来。
不知道有没有更好的方法,如果有,请不吝赐教!也就是我第二天排出来的应该是这样:account | value1 | Order | OrderChanged
-----------------------------------------
aaa 40 1 +2
bbb 30 2 -1
ccc 15 3 -1
因为我之前排的时候已经有LEFT OUTER JOIN了。怎么再JOIN进去?INSERT database.bx_top_level
SELECT t0.ID, t0.Value1, t1.Name, t2.Name, @nRankOrder:=@nRankOrder + 1 FROM database.account AS t0
LEFT OUTER JOIN (database.factroy_info AS t1, database.address_info AS t2) ON (t1.FactroyID=t0.FactroyID AND t2.AddressID=t0.AddressID)
ORDER BY Value1 Desc;t1.Name,t2.Name在Account中没有,而是一个外键到factroy_info和address_info中。
譬如,表table1account | value1 | Order
------------------------
bbb 30 1
ccc 15 2
aaa 10 3
第二天又会排出一个名次,还是表table1,即把昨天覆盖了account | value1 | Order
------------------------
aaa 40 1
bbb 30 2
ccc 15 3
因为account每天消费的值不一样,所以Order会变化。
***********************************************
******************* 问题来了 ******************
***********************************************
我如何得到account上升的名次?account | OrderChanged
------------------------
aaa +2
bbb -1
ccc -1
因为我每次排榜的时候都会将之前的覆盖,所以以前的没有了。所以我的想法是:在table1中加一个字段,然后通过临时表来保存上一个表,最后计算出来。
不知道有没有更好的方法,如果有,请不吝赐教!也就是我第二天排出来的应该是这样:account | value1 | Order | OrderChanged
-----------------------------------------
aaa 40 1 +2
bbb 30 2 -1
ccc 15 3 -1
因为我之前排的时候已经有LEFT OUTER JOIN了。怎么再JOIN进去?INSERT database.bx_top_level
SELECT t0.ID, t0.Value1, t1.Name, t2.Name, @nRankOrder:=@nRankOrder + 1 FROM database.account AS t0
LEFT OUTER JOIN (database.factroy_info AS t1, database.address_info AS t2) ON (t1.FactroyID=t0.FactroyID AND t2.AddressID=t0.AddressID)
ORDER BY Value1 Desc;t1.Name,t2.Name在Account中没有,而是一个外键到factroy_info和address_info中。
-----------------------------
201112 bbb 30 1
201112 ccc 15 2
201112 aaa 10 3
201113 aaa 40 1
201113 bbb 30 2
201113 ccc 15 3
select a.*,a.Order-b.Order
from 表table1 a ,表table1 b
where a.cw=201113 and b.cw=201112
他出来的结果集是MxN。放到一个表中好像没办法做啊。想了半天没想到合适的SQL!!!!!!
from 表table1 a ,表table1 b
where a.cw=201113 and b.cw=201112
所表现出来的语义,但是不知道为什么,貌似语法有问题,出来的集合是一个MxN的集合。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
from TEST_GAO a ,TEST_GAO b
where a.cw=201113 and b.cw=201112 and b.account =a.account