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 中可以进行条件连接吗?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005 多条件更新数据库

本地主机在 sql server 2005 中不起作用

sql2005 中的把2个表创建成一个视图

sql server 2005实现树形菜单显示的数据库表怎么设计?

SQL Server 2000 或 2005 中的联接

关于SQL Server 2005 设置远程连接的控制