为什么更新查询每次更新两条记录?

时间:2018-05-09 12:00:45

标签: sql oracle

我正在创建一个应用程序,我希望在time_out_history列中基于当前日期存储每个最后time_out详细信息,因为我创建的查询查询工作正常但问题是它始终更新整个记录

EMPLOYEE_ID--       VARCHAR2(30 BYTE)
TIME_IN--           TIMESTAMP(6) WITH LOCAL TIME ZONE
TIME_OUT--          TIMESTAMP(6) WITH LOCAL TIME ZONE
WORKING_HOUR--      VARCHAR2(30 BYTE)
PUNCH_DATE--        DATE
TIME_OUT_HISTORY--  VARCHAR2(200 BYTE)

我的查询是:

 UPDATE EMPLOYEE_LOGIN_TIME T1 SET T1.TIME_OUT_HISTORY=
  (SELECT pk.TIME_OUT FROM EMPLOYEE_LOGIN_TIME pk WHERE trunc(punch_date)=trunc(SYSDATE))

1 个答案:

答案 0 :(得分:0)

你的命令是:

def wheelEvent(self, event):
    if (event.modifiers() & QtCore.Qt.ControlModifier):
        self.bindWheel(event)
    else:
        super().wheelEvent(event)

此处,通过内部UPDATE EMPLOYEE_LOGIN_TIME T1 SET T1.TIME_OUT_HISTORY= (SELECT pk.TIME_OUT FROM EMPLOYEE_LOGIN_TIME pk WHERE trunc(punch_date)=trunc(SYSDATE) ) ; ,您正在寻找分配给SELECT的有效值。您可能会发现某些值,在这种情况下,select的结果将是T1.TIME_OUT_HISTORY

要仅更新要更新的记录,您的命令应如下所示:

null

添加的UPDATE EMPLOYEE_LOGIN_TIME T1 SET T1.TIME_OUT_HISTORY= (SELECT pk.TIME_OUT FROM EMPLOYEE_LOGIN_TIME pk WHERE trunc(punch_date)=trunc(SYSDATE) ) WHERE T1.<column name> .... AND T1.<column name> .... ; 确定了从WHERE选择应更新的记录时要使用的规则。

这如何让事情更清楚。