【发布时间】:2017-10-03 12:09:57
【问题描述】:
我有这行代码:
if exists(select a.id, a.user_id
from AEmployeeLogs a
inner join AUsers b on b.id = a.user_id
where b.username = @username
and b.password = @password
and convert(date, a.date_in) = convert(date, dateadd(HOUR, 15, getdate())))
select 'Exist' as result;
else
begin
select
a.id, username, firstname, lastname, user_image, UserType, title,
'user_type_title', is_cashier,
case
when @num is null then 1
else @num + 1
end 'number'
from
dbo.AUsers a
inner join
ALookUp b on b.id = a.UserType
left join
AEmployeeLogs c on c.user_id = a.id
where
a.username = @username and a.password = @password
end
declare @id int;
select @id = a.id
from dbo.AUsers a
INNER JOIN ALookUp b
on b.id = a.UserType
where username = @username and password = @password
begin
INSERT INTO AEmployeeLogs (date_in,[user_id],note,isactive)
select dateadd(HOUR, 15, getdate()), @id, '',0
where @id is not null
end
If Exists 函数工作正常,但是当我查看表 AEmployeeLogs 时,它仍然插入,即使存在当我在我的中有多个开始和结束函数时编写 else 语句的正确方法是什么查询
注意:第一个开始和结束的作品没有选择,但第二个作品需要帮助
【问题讨论】:
-
您的插入到 AEmployeeLogs 将始终执行,它已离开您的 if/else 块的范围。第一个 End 是范围完成的地方。听起来您可能只需要在声明 @id 之前删除 End ,然后声明以下 Begin 。
-
如果我将它们放在一个开头和结尾@MikeR,这个查询是否有效
-
是的,如果你的 else 语句只有一组 Begin & End,那么查询应该可以工作。
标签: sql sql-server