我有一个表格,我想单独更新行:
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更新特定行?对不起如果我很困惑。
答案 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中可能有更好的方法。
这个解决方案的缺点:你必须在更新中做一个额外的选择,这会更慢,但是对于这个例子,如果认为它应该没问题。