如何更新具有两个不同ID的特定行

本文关键字:ID 两个 何更新 更新 | 更新日期: 2023-09-27 17:58:33

我有一个表,我想在其中单独更新一行:

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"。但"结束"部分很棘手。我最终更新了所有行并丢失了以前的数据。

如何使用每个特定员工的最新交易ID更新特定行?对不起,如果我弄糊涂了。

如何更新具有两个不同ID的特定行

我读到你的问题是这样的:

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

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

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

阅读这个类似的问题:

是否可以使用sql在更新语句中使用MAX?

这主要是针对MS SQL Server的,但我认为您可以很容易地将其转换为mysql。在mysql中可能有更好的方法。

此解决方案的缺点:您必须在更新中进行额外的选择,这会更慢,但对于本例,如果认为应该可以的话。