2016-11-25 13 views
0

に参加私は2つのテーブルがあります(278行を持つ)SQL Serverの基本的な

  • (172行を持つ)Currencies1
  • Currencies2

を私は唯一の172行を返すことに参加したいが、 :258行

を返し

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

戻って268行

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

私はこれである理由は分からない278行

を返します。

答えて

0

2つのテーブルに重複があります。

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

これは、結果セットのための第二のテーブルから任意の一致を選択します:このような何かを行うことができます。しかし、実際にどの通貨コードが2つのテーブルに複製されているかを調べるほうが良いでしょう。

+0

返信いただきありがとうございます。私は確かに、表Currencies2(例えば、すべてのユーロ諸国)に重複しています。私はあなたがTop 1の選択に参加する理由を理解していますが、もっと簡単な方法が必要であると思っていました。 。 。私は間違っていたと思う。 –