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 · 3570 次点击
    这是一个创建于 4330 天前的主题,其中的信息可能已经有所发展或是发生改变。
    排行榜要先按金排,再按银拍,再按铜排。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   ·   实用小工具   ·   1002 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:08 · PVG 05:08 · LAX 13:08 · JFK 16:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.