这是我的表[![生物识别系统员工
我正在使用此SP但收到错误消息当EXISTS未引入子查询时,只能在选择列表中指定一个表达式。 请有人帮我谢谢。
IF(
(
SELECT(
SELECT * FROM AttendanceLogs
WHERE LogDateTime < CURRENT_TIMESTAMP
and LogDateTime > (
select CONVERT(datetime,CURRENT_TIMESTAMP)
)
)
%2)
=0)
begin
Update AttendanceLogs set Direction=1
end
else
begin
Update AttendanceLogs set Direction=0
end
我正在创建员工出勤系统。基本上我们有生物识别手指扫描设备来跟踪时间并将其存储到数据库,但设备无法存储时间,因为它只能检查,如“方向”栏中所示。现在我要做的是将Direction列从1更改为0如果员工1在7:27 Pm登录,则应该记录为'1'并且当同一员工尝试在当天7:28 Pm再次登录时,它应记录为'0'。它将是更新记录的基础
答案 0 :(得分:0)
你这是错误的做法。
你应该这样做:
UPDATE AttendanceLogs
SET Direction = CASE WHEN <condition> THEN 0 ELSE 1 END
应根据您的具体情况更换<condition>
。
答案 1 :(得分:0)
阅读错误消息:
当选择列表中只能指定一个表达式时 EXISTS
没有引入子查询
如果您从IF
声明中删除了不必要的内容,最终会得到以下结果:
IF
(
SELECT *
FROM AttendanceLogs
WHERE LogDateTime < CURRENT_TIMESTAMP
and LogDateTime > CONVERT(datetime,CURRENT_TIMESTAMP)
)%2
=0
那么,问题在于您尝试应用%
运算符的内容? *
正在选择所有列,引擎不知道要应用%2
的列。
另外,我猜你试图做这样的事情:
UPDATE AttendanceLogs
SET Direction = IIF([MyColumn] % 2 = 0, 1, 0)
WHERE LogDateTime < CURRENT_TIMESTAMP
and LogDateTime > CONVERT(datetime,CURRENT_TIMESTAMP)