MySQL如果存在插入或者做其他事情

时间:2011-09-20 19:53:09

标签: mysql insert conditional

我在向MySQL中添加条件时遇到了一些困难。我一直在尝试创建一个查询,它将遍历所有标题为电子邮件的列,如果它存在,我想做这样的事情: 如果存在电子邮件,我希望它将列的现有值正确并添加php变量$ correct。但是,如果电子邮件不存在,那么我希望它在列电子邮件中添加值为$ email的新记录,并将$ correct更正为正确的列。任何帮助将不胜感激 这是我拥有和不起作用的东西:

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 个答案:

答案 0 :(得分:4)

假设emailUNIQUE约束,您应该使用INSERT ... ON DUPLICATE KEY UPDATE

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

另请参阅我对其他Stack Overflow问题的回答:INSERT IGNORE vs INSERT … ON DUPLICATE KEY UPDATE

答案 1 :(得分:2)

您遗失了EXISTS语句以及THEN

中的END IFIF
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;

答案 2 :(得分:0)

您是否只需要选择电子邮件列?或者您有多个包含电子邮件地址的列?如果您有多个包含电子邮件的列,那么您需要说明col1Email ='$ email'或col2Email ='$ email'...等等。要获取行的计数,请尝试 从facebookqs中选择COUNT(*),其中col1Email ='$ email'或col2Email ='$ email'。

答案 3 :(得分:0)

使用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');