SQL Server - 使用DISTINCT进行内部联接

Nat*_*Pet 15 sql inner-join

我很难做到以下几点:

select a.FirstName, a.LastName, v.District
from AddTbl a order by Firstname
inner join (select distinct LastName from
            ValTbl v  where a.LastName = v.LastName)  
Run Code Online (Sandbox Code Playgroud)

我想在ValTbl上进行连接,但仅针对不同的值.

kol*_*kol 13

试试这个:

select distinct a.FirstName, a.LastName, v.District
from AddTbl a 
  inner join ValTbl v
  on a.LastName = v.LastName
order by a.FirstName;
Run Code Online (Sandbox Code Playgroud)

或者这个(它做的相同,但语法不同):

select distinct a.FirstName, a.LastName, v.District
from AddTbl a, ValTbl v
where a.LastName = v.LastName
order by a.FirstName;
Run Code Online (Sandbox Code Playgroud)


Den*_*hen 6

Nate,我认为您实际上为问题中的正确答案提供了一个良好的开端(您只需要正确的语法)。我也有同样的问题,将DISTINCT放在子查询中确实比这里提出的其他答案要便宜。

select a.FirstName, a.LastName, v.District
from AddTbl a 
inner join (select distinct LastName, District 
    from ValTbl) v
   on a.LastName = v.LastName
order by Firstname   
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说似乎是正确的答案。接受的答案是在查询运行后对所有内容进行不同(从性能角度来看这很糟糕),但OP只希望ValTbl是不同的,他没有说他也希望删除AddTbl中的重复记录。 (4认同)