Вставьте строку в sql, если она совпадает, а затем обновите ее.
я пробовал
INSERT INTO test (name, email)
SELECT * FROM (SELECT 'Rupert', '[email protected]') AS tmp
WHERE NOT EXISTS (
SELECT name FROM test WHERE name = 'Rupert'
) LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM `test`;
+----+--------+-----------------+
| id | name | email |
+----+--------+-----------------+
| 1 | Rupert | [email protected] |
+----+--------+-----------------+
Это работает только для проверки дублирующейся записи. но я хочу, чтобы, если запись не найдена, вставить ее или обновить.
INSERT INTO test (name, email)
SELECT * FROM (SELECT 'Rupert', '[email protected]') AS tmp
WHERE NOT EXISTS (
SELECT name FROM test WHERE name = 'Rupert'
) LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM `test`;
+----+--------+-----------------+
| id | name | email |
+----+--------+-----------------+
| 1 | Rupert | [email protected] |
+----+--------+-----------------+
Я хочу обновить строку в mysql, если она соответствует условию where. если не совпадают, вставьте строку в mysql.
Пожалуйста, прочитать документацию.
Я пробовал это INSERT INTO test(name,email) VALUES ('abhi','[email protected]') ON DUPLICATE KEY UPDATE name='abhi'; ОБНОВЛЕНИЕ набора тестов name='abhishek' email='[email protected]' ГДЕ name = 'abhi'; это показывает мне ошибку
Вы можете использовать ON DUPLICATE KEY
во-первых, вам нужно создать уникальный индекс:
ALTER TABLE
тестADD UNIQUE email(
электронная почта`);
таким образом, если вы вставите запись с тем же значением электронной почты, она обновит запись.
INSERT INTO test (name, email) VALUES("Rupert", "[email protected]")
ON DUPLICATE KEY UPDATE name = "Rupert", email = "[email protected]"
если это новое электронное письмо, оно создаст новую запись
Прежде всего, вам нужно выполнить этот запрос
ALTER TABLE test ADD CONSTRAINT email UNIQUE (email);
После этого используйте это, он обновит вашу запись, если она существует
INSERT INTO test (name,email) VALUES ('Gorilla','[email protected]') ON DUPLICATE KEY UPDATE email = "[email protected]"
Какой у Вас вопрос?