2012-03-21 71 views
0

我有了像下面的數據表中的第一個實例(按日期排序)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 

如何做到這一點?

回答

1

如果你需要的是每一個的第一個實例,並沒有進一步的信息,那麼它的簡單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的第一個日期,然後返回到表以檢索更多詳細信息

1

這是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