INSERT INTO ON更新一切

时间:2013-02-07 15:02:48

标签: mysql

我使用这个sql语句......

INSERT INTO users(id, email, phone, name )
 VALUES ($id, $email, $phone, $name)
ON DUPLICATE KEY UPDATE email=VALUES(email), phone=VALUES(phone), name=VALUES(name)

它可以工作但是:有没有办法更新每一列而没有每列的VALUE = VALUES(列)?

3 个答案:

答案 0 :(得分:2)

根据reference manual,明确列出每列是唯一的方法。

答案 1 :(得分:1)

如果列使用派生值(例如foo=concat("one","two")),则不使用VALUES函数。否则,是的。它只是指最初传递的内容。

了解它here

答案 2 :(得分:0)

不,我不这么认为。我们需要始终使用我们想要更新的值来指定列名。 像这样:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]