2017-10-12 42 views
0

美好的一天,我有一個關於MySQL查詢的問題。我想創建一個每日時間記錄輸出,但我的問題在於查詢。我想要的是,當記錄具有相同的ID和日期時,它必須更新,否則它會插入一條新記錄。這些都是一些表格屬性的截圖VB.Net每日時間記錄MySQL

enter image description here

enter image description here

+1

我以前有同樣的問題,我的解決方案是運行選擇查詢,如果它返回一行,更新它,否則,它會插入一個新的。你有沒有嘗試過這種方法? –

+0

[插入到MySQL表或更新,如果存在](https://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists) –

+0

我試過這種方法,但我想用sql學習它。感謝您的建議btw – arreojn

回答

0
CREATE PROCEDURE dbo.EditGrade 
     @Id int 
     ,@TimeIn datetime 
     ,@TimeOut datetime 
     ,@Existing bit OUTPUT 
    AS 
    BEGIN 

     SET NOCOUNT ON; 

     DECLARE @CurrentTimeIn as datetime 
DECLARE @CurrentId as int 


     SELECT @CurrentId = Id     
     FROM tblAttendance 
     WHERE TimeIn = @TimeIn 

     IF (@CurrentId <> @Id)  
      BEGIN 
      IF (SELECT COUNT(ISNULL(Id,0)) 
       FROM tblAttendance 
       WHERE TimeIn = @TimeIn    
        SET @Existing = 0 
       ELSE 
        SET @Existing = 1 
      END 
     ELSE 
      BEGIN 
       SET @Existing = 0 
      END 

      IF @Name = '' 
      SET @Name = null 

     IF (@Existing = 0) 
      UPDATE tblAttendance 
      SET TimeIn = @TimeIn 
       --other column values here 
      WHERE Id = @Id 
     ELSE 
      --INSERT FROM tblAttendance query here 

    END 


    GO 

這是從MS SQL存儲過程,你可以把它轉換成MySQL版本。

注意,日期時間類型也會檢查秒數,所以不要儘可能多地包含秒,否則它將呈現爲不相同(例如time in = 10:00:01,超時時間爲10:00 :02將被渲染爲不相同)

+0

有人可以把它翻譯成MySQL嗎?我不太熟悉ms sql – arreojn