在重复更新

时间:2014-04-05 17:30:36

标签: mysql sql

在SO和其他论坛上有几个关于此的主题。但是,当我想在MySQL中进行插入查询时,我没有清楚几件事情。我发现a thread这是一个有趣且非常相似的问题。但是,我想听听你的好建议。

  1. ON DUPLICATE KEY UPDATE-这只是引用表的主键或其他列吗?
  2. 如果是其他我还有其他问题。假设,我有一个类似于以下列的表 -
  3. log_id (PRIMARY KEYuser_id (FOREIGN KEY)working_datetime_intime_out

    Scenario:

    1. 2014-05-04,Bin先生(user_id:2)在办公室09:03:12 AM
    2. 办理登机手续
    3. 2014-05-04,Bin先生(user_id:2)办公室结账03:13:12 PM
    4. 此时,我想在同一天更新早上为user_id:2创建的现有行。我只想添加结账时间。

      Which I already tried:

      $sql = "INSERT INTO work_log (user_id, working_date, time_out) 
      VALUES('2', '2014-05-04', '03:13:12')
      ON DUPLICATE KEY UPDATE user_id = VALUES(user_id), working_date = VALUES(working_date)";
      

1 个答案:

答案 0 :(得分:0)

定义一个复合键,如:

UNIQUE KEY( user_id, working_date )

ON DUPLICATE中,设置值如:

ON DUPLICATE KEY 
    UPDATE time_out = VALUES(time_out);