PHP - MYSQL - 在重复键和(?)上插入

时间:2013-12-22 00:56:41

标签: php mysql

是否可以将重复键连接到另一个语句。 我刚刚为示例选择了一些整数(4=4)。在实际代码中,我试图比较两个日期,并且只有当数据库行中的日期大于php生成的日期和重复密钥时,才应将unj更新为7

来自:

$sql="INSERT INTO mutable (hid, xsn, unj, for, datetime)
VALUES ('$hid', '$xsn', '$unj', '$for', now()) ON DUPLICATE KEY UPDATE unj=7";

到此:

 $sql="INSERT INTO mutable (hid, xsn, unj, for, datetime)
VALUES ('$hid', '$xsn', '$unj', '$for', now()) ON 4=4 AND DUPLICATE KEY UPDATE unj=7";

ON 4 = 4 AND )已添加。

但这不起作用。有没有办法存档?

谢谢。

编辑:我知道我可以使用SELECT然后使用INPUT或UPDATE对此进行存档,但我需要更高效的代码。

1 个答案:

答案 0 :(得分:6)

INSERT INTO mutable (hid, xsn, unj, `for`, datetime)
VALUES ('$hid', '$xsn', '$unj', '$for', now()) 
ON DUPLICATE KEY UPDATE unj = IF(datetime > VALUES(datetime), 7, unj)

我对此进行了测试,但确实有效。

VALUES(datetime)是指您尝试插入datetime列的值。这是一种在ON DUPLICATE KEY UPDATE子句中重复值的便捷方式,无需在查询中将其写入两次。

如果IF()中的条件返回false,则默认设置为unj = unj,这意味着无操作。

PS:forMySQL reserved word,因此需要分隔。避免使用该列名称会更简单。