我需要编写一个基于条件(在这种情况下,基于其中一列中的值)连接表的选择查询。我愿做这样的事情:有条件连接可能在SQL Server 2005中?
SELECT *
FROM TableA
INNER JOIN TableB ON (TableA.Column1 = TableB.Column1 OR TableA.Column1 = 0) -- Does not work!
我需要编写一个基于条件(在这种情况下,基于其中一列中的值)连接表的选择查询。我愿做这样的事情:有条件连接可能在SQL Server 2005中?
SELECT *
FROM TableA
INNER JOIN TableB ON (TableA.Column1 = TableB.Column1 OR TableA.Column1 = 0) -- Does not work!
这应该达到什么样的你需要:
SELECT *
FROM TableA A
WHERE A.Column1 = 0
OR EXISTS(
SELECT B.Column1
FROM TableB B
WHERE B.Column1 = A.Column1
);
我不完全相信你在做什么,但它好像你正在寻找一个外部联接:
SELECT *
FROM TableA LEFT OUTER JOIN TableB ON TableA.Column1 = TableB.Column1
WHERE TableB.Column1 IS NOT NULL
OR TableA.Column1 = 0
如果你想从表B从表A行和列,只是使用由UNION命令分开的两个SELECT语句。
据我所知,条件连接是不可能的,但还有其他方法可以实现类似的结果。你能否更新你的问题以包括你想要在你的例子中实现的内容? – 2009-01-30 16:50:37
你期待什么结果A INNER JOIN B ON A.Col = 0? – devio 2009-01-30 17:05:54
预期结果的示例数据在这里会很棒。表格定义会更好,但对于这样的问题可能不是必需的。 – 2009-01-30 18:55:08