帮助SQL查询

时间:2010-07-15 09:39:53

标签: sql db2

考虑以下示例。 alt text http://i26.tinypic.com/1zo7mub.jpg

我必须选择table1中存在于table2中的所有记录以及来自table2的所有记录,这些记录在table1中不存在但存在于table2中且IsActive = 1且状态不为null。

我最初尝试使用连接,但是如何在后面的部分中选择表1中不存在的记录?我必须在单个查询中进行,可能是使用SQL视图。

修改 伙计我需要将结果组合成2个表的UNION,因此table1中没有行,但是在table2中,属于table1的列将是空白的。

3 个答案:

答案 0 :(得分:2)

以下是一个示例查询:

select  *
from    Table2 t2
left join
        Table1 t1
on      t1.id = t2.id
where   t1.id is not null
        or (isActive = 1 and status is not null)

where子句的第一行负责“table2中存在于table2中的所有记录”。第二行是“表1中不存在但存在于表2中,并且IsActive = 1且状态不为空”。

答案 1 :(得分:2)

这里需要一个外部联接。

http://msdn.microsoft.com/en-us/library/ms187518.aspx

答案 2 :(得分:0)

这是吗?不确定我是否做对了你想做的事。

SELECT
    *
FROM
    Table1 t1
        JOIN
    Table2 t2 ON (t1.ID = t2.ID OR (t1.ID IS NULL AND t2.isActive = 1 AND t2.Status IS NOT NULL))