如何使用2个不同的ID更新特定行?

时间:2016-07-25 10:24:22

标签: c# mysql

我有一个表格,我想单独更新行:

Transaction ID  EmpID    START    END     LOGDATE
1                 1     8:32:32   NULL   7/25/2016
2                 2     9:02:10   NULL   7/25/2016
3                 3     9:00:56   NULL   7/25/2016
4                 3     9:42:00   NULL   7/26/2016
5                 2     10:58:00  NULL   7/26/2016
6                 1     9:23:00   NULL   7/26/2016   

如果我使用它:

UPDATE EmpLog SET ShiftEnd = '09:00:00' WHERE EmpID = 1 and CONVERT(date,     EmpLog.LogDate) = CONVERT(date, GETDATE()) 

我只能在一天内更新特定的行,但由于我需要能够计算加班费,所以不能。

如何使用C#更新特定行以更新特定事务的END列?

基本上,我的C#程序的布局是用户必须输入他的EmpID,然后按'START'或'END'。但'END'部分很棘手。我最终更新了所有行并丢失了以前的数据。

如何使用每个特定员工的最新交易ID更新特定行?对不起如果我很困惑。

1 个答案:

答案 0 :(得分:2)

我这样读了你的问题:

  

我想更新特定员工的最后一个条目

只要每个条目的事务ID都会增加,你就可以这样做:

UPDATE EmpLog 
    SET ShiftEnd = '09:00:00' 
    WHERE EmpID = 1 AND [Transaction ID] = 
(SELECT MAX([Transaction ID]) FROM EmpLog WHERE EmpID = 1)

阅读这个类似的问题:

Is it possible to use MAX in update statement using sql?

这主要适用于MS SQL Server,但我认为您可以轻松将其转换为mysql。在mysql中可能有更好的方法。

这个解决方案的缺点:你必须在更新中做一个额外的选择,这会更慢,但是对于这个例子,如果认为它应该没问题。

相关问题