2016-07-25 29 views
0

我有一個表,其中我想單獨更新行:如何使用2個不同的ID更新特定行?

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,然後按'開始'或'結束'。但'結束'部分是棘手的。我最終更新了所有行並丟失了以前的數據。

如何使用每個特定員工的最新交易ID更新特定行?對不起,如果我很困惑。

+0

有併發訪問這些數據嗎? – Steve

+0

那麼,現在,沒有。但我期待着擴展它。現在我只是試圖製作一個工作樣本,雖然掙扎。 – user3442765

回答

2

我看了你的問題是這樣的:

我想只要事務ID將爲每個條目增加至更新特定員工

中的最後一項,你可以做什麼像這樣:

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

閱讀本similiar問題:

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

這是針對MS SQL Server的,但我認爲你可以很容易地將它翻譯成mysql。在mysql中可能有更好的方法。

該解決方案的缺點:您必須在更新中進行額外的選擇,這會更慢,但對於此示例,如果認爲它應該可以。

+0

非常感謝!我甚至不知道你可以像這樣構造它。謝謝,真的! – user3442765

相關問題