我用这个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) 的情况下更新每一列?
我用这个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) 的情况下更新每一列?
根据参考手册,明确列出每一列是唯一的方法。
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.
不,我不这么认为。我们需要始终指定具有我们要更新的值的列名。像这样:
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] ... ]