即使指定了distinct,SQL也会检索重复项

时间:2013-04-05 10:45:11

标签: sql

我尝试从基于以下内容的表中检索一些不同的competence_id行:

select distinct competences.competence_id, skillmgt.* 
from competences
join skillmgt 
on competences.competence_id=skillmgt.cid
Where skillmgt.eid=121 and datename(yyyy,skillmgt.timestamp)='2013'

但它会获得所有competence_id个重复项。

2 个答案:

答案 0 :(得分:0)

你需要分组。

select competences.competence_id, skillmgt.* 
from competences
join skillmgt 
on competences.competence_id=skillmgt.cid
group by competences.competence_id

答案 1 :(得分:0)

我想这会有用(我猜你的一些列名):

select competences.competence_id, skillmgt.* 
from competences c
join skillmgt s
on c.competence_id=s.cid
where s.sid = (select max(sqs.sid) from skillmgt sqs where c.competence_id=sqs.cid)

您没有说出您正在使用的SQL版本。如果我使用SQL Server 2005及更高版本执行此操作,那么我将使用稍微更优雅的ROW_NUMBER函数。