mysql - 获取mysql中与max相关的数据

标签 mysql max

我有一个名为 log_ payment 的表,其中包含一系列付款记录,例如:

log_user_id, log_date, log_payment_id

13, 2013-01-01 01:13:00, TRIAL<BR>
13, 2013-01-02 01:18:00, 1<BR>
13, 2013-01-03 01:05:00, 2

我想要获取的是用户最后记录的付款 ID 和日期。所以我希望 user_id 的最后一笔交易是 01/03 并且付款 id 为 2。所以我编写了这个查询:

select max(log_date) as max_date,log_user_id,log_payment_id from log_payment group by log_user_id

但它返回13, 2013-01-03 01:05:00, TRIAL

因此,根据我在其他地方找到的一些数据,我尝试了以下方法:

select log_user_id, max_date, log_payment_id from (select log_user_id,max(log_date) as max_date from log_payment group by _log_user_id) payment_table inner join log_payment on payment_table.log_user_id = log_payment.log_user_id and payment_table.max_date = log_payment.log_date

但这持续了几分钟,直到我最终取消它。我错过了什么?

最佳答案

我已经重新解析了您的查询,除了分组依据中的 _log_user_id 之外,看起来不错。它应该是log_user_id:

 select log_user_id, 
        max_date, 
        log_payment_id from 
        (select log_user_id,max(log_date) as max_date from log_payment group by _log_user_id)
              payment_table 
        inner join 
        log_payment 
        on payment_table.log_user_id = log_payment.log_user_id and 
           payment_table.max_date = log_payment.log_date

根据表的大小,查询可能会很慢。尝试在查询末尾添加 LIMIT 10,看看是否能获得前 10 个元组所需的结果。

--dmg

关于mysql - 获取mysql中与max相关的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888942/

相关文章:

mysql - MAX函数为NULL时如何设置0?

mysql left join 所有行的最大值

mysql - TYPO3 IRRE 打开记录极慢

MySQL : Returning empty field instead of no row

java - 在实时服务器上部署 Java EE 应用程序

php - 在二维数组中查找最小值/最大值

java - 使用 Tomcat 7 (MySQL) 设置连接池

mysql - SQL 将库存盘点表连接到日期表

mysql - 根据最大值删除一行

r - 在字符串值中查找最常见的单词