2016-11-25 82 views
0

我有兩個表:SQL Server的基本加盟

  • Currencies1(172行)
  • Currencies2(278行)

我只想要一個連接返回172行,但:

SELECT 
    Currencies1.*, Currencies2.* 
FROM 
    Currencies1 
INNER JOIN 
    Currencies2 ON Currencies1.AlphabeticCode = Currencies2.CurrencyCode;  

返回258行

SELECT Currencies1.*, Currencies2.* 
FROM Currencies1 
LEFT JOIN Currencies2 ON Currencies1.AlphabeticCode = Currencies2.CurrencyCode;  

返回268行

SELECT Currencies1.*, Currencies2.* 
FROM Currencies1 
LEFT JOIN Currencies2 ON Currencies1.AlphabeticCode = Currencies2.CurrencyCode;  

返回278行

我不知道這是爲什麼。

回答

0

你在這兩個表中有重複。您可以做這樣的事情:

SELECT c1.*, c2.* 
FROM Currencies1 c1 OUTER APPLY 
    (SELECT TOP 1 c2.* 
     FROM Currencies2 c2 
     WHERE c1.AlphabeticCode = c2.CurrencyCode 
    ) c2 ; 

這第二個表選擇任意匹配結果集。但是,您可能會更好地計算出兩張表中哪些貨幣代碼實際上是重複的。

+0

感謝您的答覆,我當然在表格Currencies2(例如所有的歐元國家)有重複。我明白你爲什麼加入前1名選擇,但我只是認爲必須有一個更簡單的方法。 。 .guess我錯了。 –