/ / Як я можу оновити запис MySQL, якщо у мене є дублікат полів "WHERE"? [closed] - mysql, sql, key, duplicates

Як оновити запис MySQL, якщо у мене є дублікат полів "WHERE"? [closed] - mysql, sql, key, duplicates

У мене є таблиця з двома полями - 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, і вставлено рядок, що може спричинити подвійне значення в a UNIQUE індекс або PRIMARY KEY, MySQL виконує UPDATE старого ряду.


0 для відповіді № 2
INSERT INTO users1 VALUES ("$userId", "$something")
ON DUPLICATE KEY UPDATE something=
IF(userId="$userId","$something",something)