考虑以下示例。 alt text http://i26.tinypic.com/1zo7mub.jpg
我必须选择table1中存在于table2中的所有记录以及来自table2的所有记录,这些记录在table1中不存在但存在于table2中且IsActive = 1且状态不为null。
我最初尝试使用连接,但是如何在后面的部分中选择表1中不存在的记录?我必须在单个查询中进行,可能是使用SQL视图。
修改 伙计我需要将结果组合成2个表的UNION,因此table1中没有行,但是在table2中,属于table1的列将是空白的。
答案 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)
答案 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))