代码之家  ›  专栏  ›  技术社区  ›  Jake

MySQL:每个用户最后10个条目?

  •  2
  • Jake  · 技术社区  · 15 年前

    我需要能够为给定ID的单个用户计算出它,并获得按分数排序的所有用户的列表。

    目前,我正在MySQL之外解决这个问题,并将它存储在每个用户的另一个col中,这样我就可以据此订购。

    # returns average for all transactions.
    SELECT user_id, AVG(score) FROM transactions WHERE user_id = 1
    # returns scores for last 10 transactions.
    SELECT user_id, score FROM transactions WHERE user_id = 1 ORDER_BY date DESC LIMIT 10
    
    2 回复  |  直到 15 年前
        1
  •  3
  •   OMG Ponies    15 年前

    使用:

      SELECT x.user_id,
             AVG(x.score)
        FROM (SELECT t.user_id,
                     t.score
                FROM TRANSACTIONS t
               WHERE t.user_id = ?
            ORDER BY t.date
               LIMIT 10) x
    GROUP BY x.user_id
    
        2
  •  1
  •   wallyk    15 年前

    只需将已经使用的两个查询组合起来:

    SELECT user_id, AVG(score)
    FROM transactions
    WHERE rowid in (
        SELECT rowid
        FROM transactions
        WHERE user_id = 1
        ORDER_BY date DESC
        LIMIT 10)
    

    哪里 rowid 不管身份证是什么。