如何从不同的表中的子查询中查看不同表中的列名?

时间:2015-09-01 02:12:49

标签: sql

我在sql中练习子查询,突然间我跳进了一个我从未想过可能发生的不正常查询。 我的询问问题是....

写一个查询来显示澳元的平均汇率,其中汇率日期是2005年7月1日??

查询是......

USE AdventureWorks2012

SELECT AverageRate FROM Sales.CurrencyRate
WHERE ToCurrencyCode='AUD' AND CurrencyRateDate IN 
                          (SELECT CurrencyRateDate FROM Sales.Currency
                           WHERE CurrencyRateDate='2005-07-01')

所以,我的问题是如何获得列名" CurrencyRateDate"在子查询中它实际上来自表" CurrencyRate" ??

我知道我的查询格式不正确。

如果我的头衔没有意义,我感到非常抱歉。如果你们可以提供更好的请更改它..

谢谢

1 个答案:

答案 0 :(得分:1)

AND CurrencyRateDate IN 
 (SELECT CurrencyRateDate FROM Sales.Currency
  WHERE CurrencyRateDate='2005-07-01')

此处的所有CurrencyRateDate引用都指向外部查询中的列。

因此,对于外部查询中的每一行,您将获得一个仅包含该行CurrencyRateDate的列表,对Sales.Currency表中的每一行重复一次(如果{{该行的1}}为CurrencyRateDate,否则列表为空。)

然后检查外部2005-07-01值是否在该列表中。当且仅当它等于CurrencyRateDate时(假设2005-07-01中至少有一行)。

所以你的查询相当于:

Sales.Currency