有人可以告诉我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)
答案 0 :(得分:0)
正确使用if exists
很容易。它不是select
,update
或SQL
语句的有效语法。没有它,您的查询将正常工作:
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;
答案 1 :(得分: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