SQL Server 2005 中可以进行条件连接吗?
Posted
技术标签:
【中文标题】SQL Server 2005 中可以进行条件连接吗?【英文标题】:Conditional Join possible in SQL Server 2005? 【发布时间】:2009-01-30 16:47:33 【问题描述】:我需要编写一个选择查询,该查询根据条件(在本例中,基于其中一列中的值)连接表。我想做这样的事情:
SELECT *
FROM TableA
INNER JOIN TableB ON (TableA.Column1 = TableB.Column1 OR TableA.Column1 = 0) -- Does not work!
【问题讨论】:
据我所知,条件连接是不可能的,但还有其他方法可以实现类似的结果。您能否更新您的问题以在示例中包含您想要实现的目标? A.Col=0 上的 A INNER JOIN B 的预期结果是什么?? 具有预期结果的样本数据在这里会很棒。表定义会更好,但对于这样的问题可能不是必需的。 【参考方案1】:我不确定您在做什么,但您似乎正在寻找外连接:
SELECT *
FROM TableA LEFT OUTER JOIN TableB ON TableA.Column1 = TableB.Column1
WHERE TableB.Column1 IS NOT NULL
OR TableA.Column1 = 0
【讨论】:
我刚刚写的完全相同的答案,只是更快。 :)【参考方案2】:这应该可以满足您的需要:
SELECT *
FROM TableA A
WHERE A.Column1 = 0
OR EXISTS(
SELECT B.Column1
FROM TableB B
WHERE B.Column1 = A.Column1
);
【讨论】:
这不会从 TableB 中选择任何列。【参考方案3】:如果您想要表 A 中的行和表 B 中的行,只需使用两个由 UNION 命令分隔的选择语句。
【讨论】:
以上是关于SQL Server 2005 中可以进行条件连接吗?的主要内容,如果未能解决你的问题,请参考以下文章