2016-11-25 85 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我错了。 –