我有一张 table 。它有一个 id 的 pk 和一个 [service, check, datetime] 的索引。
id service check datetime score
---|-------|-------|----------|-----
1 | 1 | 4 |4/03/2009 | 399
2 | 2 | 4 |4/03/2009 | 522
3 | 1 | 5 |4/03/2009 | 244
4 | 2 | 5 |4/03/2009 | 555
5 | 1 | 4 |4/04/2009 | 111
6 | 2 | 4 |4/04/2009 | 322
7 | 1 | 5 |4/05/2009 | 455
8 | 2 | 5 |4/05/2009 | 675
给定服务 2,我需要为每个唯一检查选择具有最大日期的行。所以我的结果将如下表所示。
id service check datetime score
---|-------|-------|----------|-----
6 | 2 | 4 |4/04/2009 | 322
8 | 2 | 5 |4/05/2009 | 675
有没有简短的查询?我拥有的最好的就是这个,但它返回了太多的支票。我只需要在最新日期时间进行唯一检查。
SELECT * FROM table where service=?;
最佳答案
首先您需要找出每张支票的最大日期
SELECT `check`, MAX(`datetime`)
FROM YourTable
WHERE `service` = 2
GROUP BY `check`
然后连接回来以获取其余数据。
SELECT Y.*
FROM YourTable Y
JOIN ( SELECT `check`, MAX(`datetime`) as m_date
FROM YourTable
WHERE `service` = 2
GROUP BY check) as `filter`
ON Y.`service` = `filter`.service
AND Y.`datetime` = `fiter`.m_date
WHERE Y.`service` = 2
关于mysql - 来自唯一 mysql 索引的最新日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45949944/