我有一些值得注意的值表:
| 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.任何帮助都将非常感激.