我有一些值得注意的值表:
| ID | AddedDate |
|---------|-------------|
| 1 | 2010-04-01 |
| 2 | 2010-04-01 |
| 3 | 2010-04-02 |
| 4 | 2010-04-02 |
| 5 | NULL | <----------- needs attention
| 6 | 2010-04-02 |
| 7 | 2010-04-03 |
| 8 | 2010-04-04 |
| 9 | 2010-04-04 |
| 2432659 | 2016-06-15 |
| 2432650 | 2016-06-16 |
| 2432651 | 2016-06-17 |
| 2432672 | 2016-06-18 |
| 2432673 | …Run Code Online (Sandbox Code Playgroud) 我有两张桌子,里面都有不同的公司.我想选择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
Run Code Online (Sandbox Code Playgroud)
我想回到1和3(公司2的年不同的,所以我不希望它).我无用的尝试:
SELECT one.*
FROM tableOne one, tableTwo two
WHERE one.[companyID] in (
SELECT DISTINCT companyID
FROM tableTwo
)
and one.someYear = two.someYear;
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当两个表包含少于10,000个条目时,它返回数百万行.由于敏感信息,我无法完全重新创建输出.这里的表/列名称都是由我确定你能说出来的.另外我应该指出,两个表似乎都没有主键.我认为这导致他们无法匹配.我正在使用SQL Server 2008.任何帮助都将非常感激.