簡體   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