V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellohacker
V2EX  ›  程序员

一个 mysql 排序问题

  •  
  •   hellohacker · 2014-04-21 12:55:04 +08:00 · 2699 次点击
    这是一个创建于 3664 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有二个表
    1:购买记录表
    2:中奖表

    两个表都有user那么字段,比如 中奖表中 user1 中奖4次,在购买记录里面有10条数据,那么他的中奖率是40%

    现在想根据中奖率排序 中奖记录表,怎么写?order by 好像不支持子句吧 比如 order by (select ...)
    6 条回复    1970-01-01 08:00:00 +08:00
    davansy
        1
    davansy  
       2014-04-21 13:13:37 +08:00
    尽量不要在数据库中做复杂的操作。楼主的需求可以通过另起一张表单独记录中奖率的信息
    skydiver
        2
    skydiver  
       2014-04-21 13:20:45 +08:00
    根据两个表建立一个view,然后在view里排序
    twoconk
        3
    twoconk  
       2014-04-21 13:24:03 +08:00 via Android
    单独起一张表合适
    pythoner
        4
    pythoner  
       2014-04-21 13:27:12 +08:00
    把中奖率算出来放到其它地方排序
    123123
        5
    123123  
       2014-04-21 14:41:32 +08:00
    建个view +1
    crazybubble
        6
    crazybubble  
       2014-04-21 14:52:52 +08:00
    SELECT sales_sum.user, sales_sum.deals, jackpot_sum.jackpots
    FROM
    (SELECT sales.user, count(sales.product_id) AS deals
    FROM sales
    GROUP BY sales.user) AS sales_sum,
    (SELECT jackpot.user, count(jackpot.id) AS jackpots
    FROM jackpot
    GROUP BY jackpot.user) AS jackpot_sum
    WHERE sales_sum.user = jackpot_sum.user
    ORDER BY (jackpot_sum.jackpots / sales_sum.deals) DESC;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2147 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 04:24 · PVG 12:24 · LAX 21:24 · JFK 00:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.