2016-12-09 51 views
-2

我想要兩列唯一名稱,日期差別。 例想要表中的唯一列值

table_1 
_________________ 
ID Name Date 
1 a 12-02-2016 
2 b 12-02-2016 
3 c 13-02-2016 
4 a 14-02-2016 
5 c 14-02-2016 
6 a 15-02-2016 
7 b 16-02-2016 
8 e 17-02-2016 

我想下面的輸出

ID Name Date 
1 a 12-02-2016 
3 c 13-02-2016 
7 b 16-02-2016 
8 e 17-02-2016 

PLS,幫助我,我想查詢
我曾嘗試以下查詢,但沒有奏效

  1. SELECT DISTINCT a,name,date FROM table_1
  2. select id,name, date from table_1 group by id,name
+3

mysql或oracle? – Jens

+0

如果還有一排(9,d,12-02-2016)會怎麼樣?你會期望輸出結果如何? – Boneist

+0

請不要垃圾標籤 –

回答

2

它似乎是要保留每個不同的名稱,最早出現。一種選擇使用子查詢:

SELECT ID, Name, Date 
FROM yourTable t1 
WHERE Date = (SELECT MIN(Date) FROM yourTable t2 WHERE t2.Name = t1.Name) 

注意該解決方案將返回每名組以上的記錄應該有兩個記錄具有最小日期領帶。但樣本數據似乎並不意味着會發生這種情況。

+0

其返回ID 1,2,3,8不需要1,3,7,8 http://sqlfiddle.com/#!9/00b27/6 –

+1

@AnkitAgrawal你的邏輯是什麼想要'1,3,7,8'......這不清楚。 –

+0

根據給定的上限問題 –

2

這是你想要的嗎?

select min(id),name, min(date) from table_1 group by name 
+3

但是,如果最小ID與給定名稱組的最短日期不一致,會發生什麼情況? –

+0

但是在給定的示例中,日期是按順序排列的。 – Sankar

+1

是的,我同意你對這個數據集可能行,但總的來說這可能是一個問題。要修復它,您可以先使用子查詢來查找最小ID,然後再回到原始表。 –

1

看起來你正在尋找每個名字的最早日期。這個查詢將實現。它將按名稱對其進行分組並給出該名稱的最短日期。

SELECT Name,MIN(Date) FROM table_1 GROUP BY Name