2016-07-27 168 views
-1

enter image description hereMySQL的选择最新的多个值

我有这个数据库,要查询最新的日期 ID用5,10,15,20。此查询的结果应该只是该数据库的前四行。

我该怎么做?

+2

如果您通过发布您尝试的SQL来显示一些工作,总是会感激不尽。 – sstan

+1

你已经把'group by'作为标签。另外你需要'max()',你就完成了。 –

回答

1

您可以通过

select * 
from my_table 
where (date, myID) in (select max(date), myID 
         from my_table 
         where myID in (5,10,15,20) 
         group by myID); 
+0

我在最后一行 – user1650487

+0

@ user1650487上收到错误,谢谢您错误的位置 – scaisEdge

+0

工作,谢谢 – user1650487

2

您可以使用相关子查询来查找列出的ID的最大日期。 https://en.wikipedia.org/wiki/Correlated_subquery

`SELECT * 
FROM Foo f1 
WHERE f1.Date = (
       SELECT MAX(Date) 
       FROM Foo f2 
       WHERE f1.Id = f2.Id 
       ) 
AND f1.Id IN (5,10,15,20);` 

没有本地有你确切的表结构,我无法验证语法,但这是一般的想法。

0

不是最佳解决方案,但它的工作中和组使用:

select myid, mydate from myTable where myid in (5,10,15,20) order By mydate DSC limit 4; 
0

如果它只是你需要的ID和相应的日期,以下就足够了:

SELECT 
    mt.myID, 
    MAX(mt.date) AS latestDate 
FROM myTable mt 
WHERE mt.myID IN (5, 10, 15, 20) 
GROUP BY myID