-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

列が派生値 (例: foo=concat("one","two")) を使用している場合は、VALUES 関数を使用しません。そうでなければ、はい。元々渡されたものを参照するだけです。

ここでそれについて読んでください

于 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 に答える