我正在尝试创建一个时间表,并希望完成以下SQL查询:
我有字段datebeginning和dateending以及jobid,如果给定的作业ID没有打开的话,我想只添加一个新的,如果不是,我希望查询更新给定id的fild dateending。有没有办法在不使用PHP首先选择然后插入或更新?
的情况下执行此操作答案 0 :(得分:5)
使用INSERT ... ON DUPLICATE KEY UPDATE ...
,请参阅http://dev.mysql.com/doc/refman/5.0/en/insert.html
答案 1 :(得分:1)
INSERT INTO table (jobid, datebeginning, dateending) VALUES (1,'2009/03/03','2009/05/05')
ON DUPLICATE KEY UPDATE dateending='2009/06/06';
答案 2 :(得分:0)
由于您将问题标记为MySQL,您可能还会考虑使用'REPLACE INTO',这当然取决于您填写所有字段,因为此命令会插入或删除并插入,而不是只更新一个字段。如果提供所有字段,REPLACE INTO也可以正常工作。