繁体   English   中英

SQL Server - INNER JOIN WITH DISTINCT

[英]SQL Server - INNER JOIN WITH DISTINCT

我很难做到以下几点:

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)  

我想对 ValTbl 进行连接,但仅适用于不同的值。

尝试这个:

select distinct a.FirstName, a.LastName, v.District
from AddTbl a 
  inner join ValTbl v
  on a.LastName = v.LastName
order by a.FirstName;

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

select distinct a.FirstName, a.LastName, v.District
from AddTbl a, ValTbl v
where a.LastName = v.LastName
order by a.FirstName;

我认为您实际上为您的问题中的正确答案提供了一个良好的开端(您只需要正确的语法)。 我遇到了完全相同的问题,并且将 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   

您可以使用 CTE 获取第二个表的不同值,然后将其与第一个表连接。 您还需要根据 LastName 列获取不同的值。 您可以使用按姓氏分区并按名字排序的 Row_Number() 执行此操作。

这是代码

;WITH SecondTableWithDistinctLastName AS
(
        SELECT  *
        FROM    (
                    SELECT  *,
                            ROW_NUMBER() OVER (PARTITION BY LastName ORDER BY FirstName) AS [Rank]
                    FROM    AddTbl
                )   
        AS      tableWithRank
        WHERE   tableWithRank.[Rank] = 1
) 
SELECT          a.FirstName, a.LastName, S.District
FROM            SecondTableWithDistinctLastName AS S
INNER JOIN      AddTbl AS a
    ON          a.LastName = S.LastName
ORDER   BY      a.FirstName

在“选择”之后添加“不同”。

select distinct a.FirstName, a.LastName, v.District , v.LastName
from AddTbl a 
inner join ValTbl v  where a.LastName = v.LastName  order by Firstname

在开始时执行 select distinct 是不一样的,因为您正在浪费结果中的所有计算行。

select a.FirstName, a.LastName, v.District
from AddTbl a order by Firstname
natural join (select distinct LastName from
            ValTbl v  where a.LastName = v.LastName)

试试那个。

选择不同的 a.FirstName, a.LastName, v.District from AddTbl a 内连接 ValTbl v on a.LastName = v.LastName order by a.FirstName;

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM