MySQL Если существует, вставьте или сделайте что-нибудь еще - PullRequest
4 голосов
/ 20 сентября 2011

У меня возникли трудности с вводом условия в MySQL.Я пытался создать запрос, который будет проходить через все столбцы с заголовком «электронная почта», и если он существует, я хочу сделать что-то вроде этого: если электронное письмо существует, я хочу, чтобы оно приняло правильное значение столбца и добавилопеременная php $ правильная.Но если электронная почта не существует, я хочу добавить новую запись со значениями $ email в столбец email и $ правильные в столбец правильные.Любая помощь будет принята с благодарностью.
Вот что у меня есть и не работает:

IF  (SELECT * FROM facebookqs WHERE email = '$email' > 0)
UPDATE facebookqs SET correct = correct + '$correct' where email ='$email' 
Else
Insert into facebookqs (email, correct) VALUES ('$email', '$correct')

Ответы [ 4 ]

4 голосов
/ 21 сентября 2011

Предполагая, что email имеет ограничение UNIQUE, вы должны использовать INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO facebookqs (email, correct) VALUES ('$email', '$correct')
ON DUPLICATE KEY UPDATE correct = correct + '$correct'

См. Также мой ответ на этот другой вопрос переполнения стека: INSERT IGNORE vs INSERT… ON DUPLICATE KEY UPDATE

2 голосов
/ 20 сентября 2011

Вы пропустили оператор EXISTS и THEN и END IF в IF

IF  (EXISTS(SELECT * FROM facebookqs WHERE email = '$email')) THEN
  UPDATE facebookqs SET correct = correct + '$correct' WHERE email ='$email';
ELSE
  INSERT INTO facebookqs (email, correct) VALUES ('$email', '$correct');
END IF;
0 голосов
/ 23 марта 2014

Используйте метод REPLACE, объясненный здесь: http://blogs.coldbuffer.com/inserting-or-updating-records-using-mysql-replace Из их примера:

REPLACE INTO pet (id, type, name) VALUES(1, 'Dog', 'Pluto');

который приведен в качестве примера (еще не проверял)

REPLACE INTO facebookqs (email, correct) VALUES ('$email', '$correct');
0 голосов
/ 21 сентября 2011

Вам нужно выбрать только столбец электронной почты? Или у вас есть несколько столбцов, которые содержат адреса электронной почты? Если у вас есть несколько столбцов с электронной почтой, вам нужно будет указать, где col1Email = '$ email' или col2Email = '$ email' ... и т. Д. Чтобы подсчитать количество строк, попробуйте ВЫБЕРИТЕ COUNT (*) из facebookqs, где col1Email = '$ email' или col2Email = '$ email'.

...