2015-10-16 60 views
0

嗨伙计如下表唯一名称伴随日期

╔═════╦════════════╗ 
║ Org ║ Date ║ 
╠═════╬════════════╣ 
║ A ║ 1/1/2015 ║ 
║ A ║ 12/3/2015 ║ 
║ B ║ 8/10/2015 ║ 
║ B ║ 30/5/2015 ║ 
║ C ║ 4/4/2014 ║ 
║ D ║ 19/11/2014 ║ 
╚═════╩════════════╝ 

我如何编写一个查询,使我获得对应于那里有一个以上的日期,即最早的日期只有一个独特的组织名称为

╔═════╦════════════╗ 
║ Org ║ Date ║ 
╠═════╬════════════╣ 
║ A ║ 1/1/2015 ║ 
║ B ║ 30/5/2015 ║ 
║ C ║ 4/4/2014 ║ 
║ D ║ 19/11/2014 ║ 
╚═════╩════════════╝ 

在此先感谢

+0

你已经得到了你的答案,但由于这个概念对你来说似乎是新的,所以下面是解释:你想在这里做什么称为聚合。您可以压缩数据,例如每个组织仅显示一个结果行。这个“per org”转换为SQL中的“GROUP BY Org”。然后为其他列决定要显示的集合('MIN','MAX','AVG',...)。在你的情况下,你想看到'MIN(日期)'。 –

+1

Tsql与MySQL,这是一个非常奇怪的组合...请删除无效标签。 – jarlh

+0

你应该真的回顾下面给出的答案,并向我们展示一些绿色。 –

回答

0

使用MySQL STR_TO_DATE集团通过

Select * from (SELECT * FROM `tbl` order by STR_TO_DATE(Date,'%d/%m/%Y') ASC) as new_tbl group by Org 
+1

不要这样做。首先,是什么给你的想法,“日期”是一个字符串?我不觉得这可能。然后你通过Org进行分组,也可以访问“日期”(通过选择\ *)。由于您没有使用任何集合函数(MIN,MAX等),您可以获得每个组织的匹配日期之一。可能是在你的* MySQL版本中,DBMS从已排序的子查询中选择第一个值,但这无法得到保证。不要依赖这个;它只是一个可能会改变的实现细节。 –

0

您可以使用GROUP BYMIN功能一起获得每个Org组的最早日期:

SELECT Org, MIN(Date) AS Date 
FROM table 
GROUP BY Org 
+0

那么,有一个基本的假设 – Strawberry

+0

而不是爆破反社会评论,你为什么不让我们知道什么是假设。你为什么不选择评论其他与此类似的答案? –

+0

'日期'不是OP所描述的。 '爆破'?真? – Strawberry

2

只需使用MIN得到的最早日期和GROUP BY只获得1独特的组织名称。

SELECT Org, MIN(Date) AS 'Date' FROM TableName GROUP BY Org 
+0

并且不要使用单引号作为别名。单引号用于字符串文字。双引号是别名。 –

+0

@TimBiegeleisen,哦,对不起,我没有注意到你已经有了答案,你想让我删除我的答案吗? – Japongskie

+0

不用担心......这个问题很简单,任何人都可以自己做到:-) –