› 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 · Dec 28, 2012 · 4729 views
    This topic created in 5026 days ago, the information mentioned may be changed or developed.
    排行榜要先按金排,再按银拍,再按铜排。3个orderby,但是先考虑金
    15 replies  •  1970-01-01 08:00:00 +08:00
    66450146
        1
    66450146  
       Dec 28, 2012
    我觉得全部按照换算后的铜币数量保存排序然后显示的时候换算成金/银/铜会更容易一些
    best1a
        2
    best1a  
       Dec 28, 2012
    说不定后端存的就只是铜币,然后前端输出的时候再转换...
    kenneth
        3
    kenneth  
    OP
       Dec 28, 2012
    @66450146 @best1a
    我试着排了一下,但是不对。
    http://www.mvmap.com/top/rich
    INT21H
        4
    INT21H  
       Dec 28, 2012
    Lovingly made by Kenneth
    laskuma
        5
    laskuma  
       Dec 28, 2012
    肯定只存铜币啊。好比19银71铜就存成1971 最后做几个取余和整除就行了
    august
        6
    august  
       Dec 28, 2012
    余額是這樣的 1920.49

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

    order by `金` desc, `銀` desc , `銅` desc;
    kenneth
        9
    kenneth  
    OP
       Dec 28, 2012
    @66450146 感谢你的思路,看来得考虑写一个过滤器来计算下。
    @august @laskuma @INT21H @best1a

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

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

    但是v2ex明显是一种货币,因为会自进位
    alwaysbeta
        15
    alwaysbeta  
       Dec 28, 2012
    mark
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2542 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:27 · PVG 21:27 · LAX 06:27 · JFK 09:27
    ♥ Do have faith in what you're doing.