我有两个表,都包含不同的公司。我想从tableOne
中选择所有内容出现在tableTwo
中(事实上,仅当它出现在 tableTwo
中时)。我将通过比较它们的 companyID
来做到这一点字段。它们还必须具有相同的列值 someYear
。换句话说,我想返回tableTwo
中出现的公司。来自tableOne
,当且仅当他们的someYear
列匹配。
tableOne
companyID someYear
--------- --------
1 2010
2 2009
3 2011
1 2011
7 2009
tableTwo
companyID someYear
--------- --------
1 2010
2 2008
3 2011
4 2011
5 2009
我要回1
和3
(公司2
的年份不同,所以我不想要它)。我无用的尝试:
SELECT one.*
FROM tableOne one, tableTwo two
WHERE one.[companyID] in (
SELECT DISTINCT companyID
FROM tableTwo
)
and one.someYear = two.someYear;
这里的问题是,当两个表包含的条目都少于 10,000 时,它会返回数百万行。由于敏感信息,我无法准确地重新创建输出。我相信您可以看出,这里的表/列名称都是虚构的。另外,我可能应该指出两个表似乎都没有主键。我认为这导致他们没有什么可以匹配的。我正在使用 SQL Server 2008。任何帮助将不胜感激。
最佳答案
试试这个
select one.*
from tableOne as one
inner join tableTwo as two
on one.companyID = two.companyID and
one.someYear = two.someYear
关于sql - 根据匹配列进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122794/