我使用这个link来帮助我达到我现在的位置,但是现在我的输出是错误的。
我有2列,ColumnA来自TableA,ColumnB来自表B。我希望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发布于 2014-11-13 22:39:02
我想你想加入你们的行列:
SELECT TableA.ColumnA, TableB.ColumnB
FROM TableA INNER JOIN TableB ON TableA.MatchA = TableB.MatchB内部联接将只返回每个有匹配的行。左外部联接(而不是内部连接)将为您提供TableA中的所有行和连接成功的TableB中的值。
现在,通过在表之间使用逗号来执行交叉连接。
发布于 2014-11-13 22:54:48
尝试使用UNION SELECT从两个表合并列,如下所示:
SELECT TableB.ColumnB FROM TableB
UNION ALL
SELECT TableA.ColumnA FROM TableA WHERE TableA.MatchA = @InputValhttps://stackoverflow.com/questions/26919706
复制相似问题