你能选择性插入还是更新?

时间:2009-05-13 20:12:53

标签: php sql mysql

我正在尝试创建一个时间表,并希望完成以下SQL查询:

我有字段datebeginning和dateending以及jobid,如果给定的作业ID没有打开的话,我想只添加一个新的,如果不是,我希望查询更新给定id的fild dateending。有没有办法在不使用PHP首先选择然后插入或更新?

的情况下执行此操作

3 个答案:

答案 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也可以正常工作。

http://dev.mysql.com/doc/refman/5.0/en/replace.html