MySQL查询为得到一个元素

问题描述:

我有了像下面的数据表中的第一个实例(按日期排序)MySQL查询为得到一个元素

COL_A | COL_B 

Item1 | Date1 
Item2 | Date1 
Item2 | Date2 
Item1 | Date3 
Item3 | Date3 

现在我想查询将返回每个项目的第一个实例,即结果设置应该像;

COL_A | COL_B 

Item1 | Date1 
Item2 | Date1 
Item3 | Date3 

如何做到这一点?

如果你需要的是每一个的第一个实例,并没有进一步的信息,那么它的简单GROUP BY与MIN:

select Col_A, min(Col_B) MinColB 
from tbl 
group by Col_A 

如果你想从表中已经发现的第一个实例的详细信息:

select t1.Col_A, t1.Col_B, t1.otherField... 
from tbl t1 
    inner join (select Col_A, min(Col_B) MinColB 
       from tbl 
       group by Col_A) t2 on t2.Col_A = t1.Col_A and t2.MinColB = t1.Col_B 

您可以使用派生表查找每个Col_A的第一个日期,然后返回到表以检索更多详细信息

这是MIN(COL_B)一个基本组聚集体,提供COL_B是一个适当的日期时间类型:

SELECT 
    COL_A, 
    MIN(COL_B) AS FIRST_COL_B 
FROM tbl 
GROUP BY COL_A 
ORDER BY COL_A ASC 

我建议审查the MySQL manual上聚集函数和GROUP BY