2017-10-12 66 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