【问题标题】:MySQL on duplicate key updateMySQL关于重复键更新
【发布时间】:2010-10-26 09:55:54
【问题描述】:

如果我有这样的查询,我如何引用我在更新语句中已经给出的值,这样我就不需要插入相同的数据来再次查询?示例 我想用“xxx”更新 col1 的值,但现在我需要在重复语句中再次输入“xxx”。有没有在重复语句中引用这些值?

INSERT INTO TABLENAME(col1, col2) 
VALUES (’xxx’, ‘yyy’) 
ON DUPLICATE KEY UPDATE col1 = ‘zzz’

【问题讨论】:

标签: mysql duplicates


【解决方案1】:

这应该可以工作并且更优雅一点:

INSERT INTO TABLENAME(col1, col2) 
VALUES ('xxx', 'yyy') 
ON DUPLICATE KEY UPDATE col1 = VALUES(col1)

请注意,您不需要更新行的主键部分。我们知道这是一样的,因为发生了碰撞。

【讨论】:

  • 最后一行的关键字VALUES很关键!
【解决方案2】:

在 PHP 中我这样做是为了解决问题:

$fields = "a = 1, b = 2, c = 3";
$sql = "INSERT INTO some_table SET id = $id, $fields ON DUPLICATE KEY UPDATE $fields";
mysql_query($sql);

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2012-02-17
    • 2018-05-06
    相关资源
    最近更新 更多