2009-01-30 53 views
1

我需要编写一个基于条件(在这种情况下,基于其中一列中的值)连接表的选择查询。我愿做这样的事情:有条件连接可能在SQL Server 2005中?

SELECT * 
    FROM TableA 
     INNER JOIN TableB ON (TableA.Column1 = TableB.Column1 OR TableA.Column1 = 0) -- Does not work! 
+0

据我所知,条件连接是不可能的,但还有其他方法可以实现类似的结果。你能否更新你的问题以包括你想要在你的例子中实现的内容? – 2009-01-30 16:50:37

+0

你期待什么结果A INNER JOIN B ON A.Col = 0? – devio 2009-01-30 17:05:54

+0

预期结果的示例数据在这里会很棒。表格定义会更好,但对于这样的问题可能不是必需的。 – 2009-01-30 18:55:08

回答

0

这应该达到什么样的你需要:

SELECT * 
FROM TableA A 
WHERE A.Column1 = 0 
    OR EXISTS(
      SELECT B.Column1 
      FROM TableB B 
      WHERE B.Column1 = A.Column1 
      ); 
4

我不完全相信你在做什么,但它好像你正在寻找一个外部联接:

SELECT * 
FROM TableA LEFT OUTER JOIN TableB ON TableA.Column1 = TableB.Column1 
WHERE TableB.Column1 IS NOT NULL 
    OR TableA.Column1 = 0 
0

如果你想从表B从表A行和列,只是使用由UNION命令分开的两个SELECT语句。