0

有人可以告诉我正确使用IF EXISTS. 我有这个查询,但我的IF EXISTS功能有问题。

insert into master.dbo.turnover3(shop,somefield)
select '301',Curr_Turnover 
from [S301].vpm.dbo.BO_POS_SAP_Turnover
where datediff(day,left(Sale_Date,16),getdate())= '0' if not exists (select NULL)
4

2 回答 2

0

由于您没有在此处进行更新(或者由于没有其他部分),因此您无需检查记录是否存在。No records found means no records inserted.

insert into master.dbo.turnover3(shop,somefield)
select '301',Curr_Turnover 
from [S301].vpm.dbo.BO_POS_SAP_Turnover
where datediff(day,left(Sale_Date,16),getdate()) = 0 

另外作为旁注,不确定您在子句left(Sale_Date,16)中的datediff函数中做了什么。where如果Scale_Date是一种date/datetime类型,您可以将其用作datediff(day,Sale_Date,getdate()= 0

于 2013-03-04T19:45:45.120 回答
0

正确使用if exists很容易。它不是selectupdateSQL语句的有效语法。没有它,您的查询将正常工作:

insert into master.dbo.turnover3(shop,somefield)
    select '301',Curr_Turnover 
    from [S301].vpm.dbo.BO_POS_SAP_Turnover
    where datediff(day,left(Sale_Date,16),getdate())= '0' ;

if exists T-SQL 的一部分。也就是说,您可以使用它编写脚本。使用这种语法,它只是if语句的另一种变体:

if not exists (select *
               from master.dbo.turnover3(shop,somefield)
               where shop = '301'
              )
begin
    insert into master.dbo.turnover3(shop,somefield)
        select '301',Curr_Turnover 
        from [S301].vpm.dbo.BO_POS_SAP_Turnover
        where datediff(day,left(Sale_Date,16),getdate())= '0' ;
end;
于 2013-03-04T19:42:47.270 回答