MySQL通过多个ID每个ID获取一个条目

时间:2018-10-18 14:25:59

标签: mysql

我的问题是我想要这个:

SELECT * FROM table
WHERE userId = 7243
ORDER BY date desc LIMIT 1

但是对于一个请求中的多个ID。
我尝试过:

SELECT * FROM table
WHERE userId IN (7243, 1)
GROUP BY userId
ORDER BY date desc

但是顺序似乎被忽略了。有人对我有解决方案吗?谢谢

1 个答案:

答案 0 :(得分:3)

如果您想要两个ID的最大日期记录,则可以使用子查询:

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT userId, MAX(date) AS max_date
    FROM yourTable
    WHERE userId IN (7243, 1)
    GROUP BY userId
) t2
   ON t1.userId = t2.userId AND t1.date = t2.max_date
WHERE
    t1.userId IN (7243, 1);

这是每个组的最大价值问题,只是稍有不同,即您只想在输出中看到两个可能的组。

正如@Raymond在下面评论的那样,(userId, date)上的索引应大大加快t2子查询的速度。我不确定该索引是否还能提供帮助,但应该有所作为。