关于V2EX排行榜排序的OrderBy怎么写? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
kenneth
V2EX    MySQL

关于V2EX排行榜排序的OrderBy怎么写?

  •  
  •   kenneth 2012-12-28 10:43:13 +08:00 3988 次点击
    这是一个创建于 4676 天前的主题,其中的信息可能已经有所发展或是发生改变。
    排行榜要先按金排,再按银拍,再按铜排。3个orderby,但是先考虑金
    15 条回复    1970-01-01 08:00:00 +08:00
    66450146
        1
    66450146  
       2012-12-28 10:45:40 +08:00
    我觉得全部按照换算后的铜币数量保存排序然后显示的时候换算成金/银/铜会更容易一些
    best1a
        2
    best1a  
       2012-12-28 10:51:56 +08:00
    说不定后端存的就只是铜币,然后前端输出的时候再转换...
    kenneth
        3
    kenneth  
    OP
       2012-12-28 11:02:41 +08:00
    @66450146 @best1a
    我试着排了一下,但是不对。
    http://www.mvmap.com/top/rich
    INT21H
        4
    INT21H  
       2012-12-28 11:09:22 +08:00
    Lovingly made by Kenneth
    laskuma
        5
    laskuma  
       2012-12-28 11:14:59 +08:00
    肯定只存铜币啊。好比19银71铜就存成1971 最后做几个取和整除就行了
    august
        6
    august  
       2012-12-28 11:15:08 +08:00
    余是的 1920.49

    你一下你的就看到
    66450146
        7
    66450146  
       2012-12-28 11:15:59 +08:00
    @kenneth
    后端不用保存金币和银币,全部用铜币保存。就像你的银行账号不关心你存的是几张百元大钞几张十元钞票几个钢蹦,都直接按照最小的分币来计算。
    显示的时候再到前端计算,g = money / 10000, s = (money / 100) % 100, b = money % 100
    august
        8
    august  
       2012-12-28 11:17:03 +08:00
    再退一步,就算分存在金 ,mysql 的 order by 也可以

    order by `金` desc, `` desc , `` desc;
    kenneth
        9
    kenneth  
    OP
       2012-12-28 11:24:51 +08:00
    @66450146 感谢你的思路,看来得考虑写一个过滤器来计算下。
    @august @laskuma @INT21H @best1a

    单独存g,s,b也有一个好处,就是将来可以控制兑换比例。汇率?
    INT21H
        10
    INT21H  
       2012-12-28 11:27:22 +08:00
    兑换比例个毛线。。什么时候见过 1k = 1000 这个比例变过?
    kenneth
        11
    kenneth  
    OP
       2012-12-28 11:30:16 +08:00
    @INT21H 咋了,又错了?我和你实物交换,我又不和你算成货币。
    另外说下@august 这样做也可以
    Desc(User.gold),Desc(User.silver),Desc(User.bronze)
    现在排序正确了。
    http://www.mvmap.com/top/rich
    laskuma
        12
    laskuma  
       2012-12-28 11:35:40 +08:00
    @kenneth 能排一次何必要排3次。。。性能下降。。
    kenneth
        13
    kenneth  
    OP
       2012-12-28 11:38:32 +08:00
    @laskuma Int又索引的情况,性能下降有限。如果要实物交换,控制兑换率,就需要分3种,如果不需要,还是做成money一个字段的好。我菜鸟,设计很多纰漏,感谢大家指正。
    cabbala
        14
    cabbala  
       2012-12-28 13:08:56 +08:00
    @kenneth 问题的关键是你想让金银铜成为一种货币还是三种货币。
    如果是一种,那么只存铜币,如果是三种,那么分别存。。。

    三种货币比较好玩,可以设定一个买卖中心

    但是v2ex明显是一种货币,因为会自进位
    alwaysbeta
        15
    alwaysbeta  
       2012-12-28 13:35:11 +08:00
    mark
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2578 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 14:40 PVG 22:40 LAX 07:40 JFK 10:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86