表1
ID Date Area message
111 2015-04-23 59 testing
222 2015-04-23 59
333 2015-04-23 97
表2
ID Date Area firstname lastname
111 2015-04-23 67 doe K
222 2015-04-23 67 jil M
333 2015-04-23 97 scot P
我有两个表我希望它首先检查表1是否存在该区域的id然后它必须从表1中获取记录如果表1中的记录不存在它必须从表2获取它然后稍后当id可能会移动到表2中更新的新区域时。
if EXISTS (select ID
from Table1
where area=@Area and Date=convert(varchar(10),GETDATE(),10)
)
BEGIN
select t2.ID
,Firstname
,Lastname
,Message
from Table2 as T2 inner join Table1 T1
on T2.ID=t1.ID
where area=@Area and
and Date=convert(varchar(10),GETDATE(),10)
END
ELSE if not Exists(select ID
from table1
where area=@Area and Date=convert(varchar(10),GETDATE(),10)
)
BEGIN
select ID
,Firstname
,Lastname
from table 2
where area=@Area
END
END
问题是因为表2中的区域发生了变化,所以它认为ID 111的记录在表1中不存在,所以它忽略了存在的第一部分
答案 0 :(得分:0)
这不是外连接的用途吗?无需在SQL Server中进行过程编程。引擎将处理它,这是一个很好的数据库模型:
SELECT B.ID, A.FIRSTNAME, A.LASTNAME, B.MESSAGE
FROM [TABLE2] AS A
LEFT OUTER JOIN [TABLE1] AS B
ON A.AREA=B.AREA
AND A.DATE=B.DATE
如果你对连接之间的区别感到困惑,我会读到this。 ven图非常适合可视化它的工作原理。