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
。