-1

我用这个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)

它工作正常,但是:有没有一种方法可以在没有每列的 column=VALUES(column) 的情况下更新每一列?

4

3 回答 3

2

根据参考手册,明确列出每一列是唯一的方法。

于 2013-02-07T15:12:03.777 回答
1

If columns are using derived values (eg foo=concat("one","two")) then you don't use the VALUES function. Otherwise, yes. It just refers to what is passed in originally.

Read about it here.

于 2013-02-07T15:10:29.597 回答
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] ... ]
于 2013-02-07T15:10:47.250 回答