У мене є таблиця з двома полями - userId і щось
У мене є такий запит:
INSERT INTO users VALUES ("$userId", "$something")
ON DUPLICATE KEY UPDATE something="$something"
WHERE userId="$userId"
Чому це не працює? Якщо я видалити
WHERE userId="$userId"
то він працює, але він оновлює всі рядки, і я, очевидно, не хочу оновлювати однакову інформацію для кожного користувача.
The userId
поле в базі даних встановлено як UNIQUE.
Відповіді:
2 для відповіді № 1Це не працює, тому що ваш синтаксис неправильний.
Правильний синтаксис виглядає наступним чином:
INSERT INTO yourTable (col1, col2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE non_key_col1 = newValue1;
Там ні WHERE
участь
Будь ласка, прочитайте Довідник MySQL для insert... on duplicate key update
.
Цитата з посилання, яку я надав вище:
Якщо ви вкажете
ON DUPLICATE KEY UPDATE
, і вставлено рядок, що може спричинити подвійне значення в aUNIQUE
індекс абоPRIMARY KEY
, MySQL виконуєUPDATE
старого ряду.
0 для відповіді № 2
INSERT INTO users1 VALUES ("$userId", "$something")
ON DUPLICATE KEY UPDATE something=
IF(userId="$userId","$something",something)