【发布时间】:2014-11-13 22:31:46
【问题描述】:
我用这个link 来帮助我到达我所在的位置,但现在我的输出是错误的。
我有 2 列,TableA 中的 ColumnA 和 Table B 中的 ColumnB。我希望 TableC 包含 2 列,即 ColumnA 和 ColumnB。 MatchA 和 MatchB 是相同的。 MatchA 在 TableA 中,MatchB 在 TableB 中。 @InputVal 是从 ColumnA + B 中选择值的方式。这是我所做的:
SELECT ColumnA, ColumnB
FROM TableA, TableB
WHERE MatchA=MatchB
AND MatchA=@InputVal
这会产生输出:
ColumnA ColumnB
44 Test1
45 Test1
46 Test1
44 Test2
45 Test2
46 Test2
44 Test3
45 Test3
46 Test3
什么时候,从逻辑上讲,应该是:
ColumnA ColumnB
44 Test1
45 Test2
46 Test3
如何纠正我的逻辑以修复缺陷?我已经经历了语句构造的许多变体,但我似乎无法理解它。 谢谢。
编辑:用户 snow_FFFFFF 有正确的解决方案,但只是因为我遗漏了一个细节而遗漏了一部分。
SELECT TableA.ColumnA, TableB.ColumnB
FROM TableA INNER JOIN TableB ON TableA.MatchA = TableB.MatchB
AND TableA.SecondMatchA=TableB.SecondMatchB --The change needed
【问题讨论】:
-
您要匹配哪些列?
标签: sql-server