MySQL如果存在则插入,否则执行其他操作。

5
我在MySQL中的条件语句有些困难。我一直试图创建一个查询,将遍历名为email的所有列,如果存在,我想做这样的事情: 如果电子邮件存在,则需要将其正确的列现有值加上php变量$correct。但是,如果不存在电子邮件,则需要添加一个新记录,其中包含值$email到email列中,$correct到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')

你可以看一下 replace into 功能吗?http://dev.mysql.com/doc/refman/5.0/en/replace.html - Nanne
4个回答

4

3

你缺少了一个EXISTS语句和IF中的THENEND 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;

谢谢,这看起来更像是我想要做的,但我仍然遇到了SQL语法错误 =/ - Trey
它说:您的SQL语法存在错误;请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,位于第1行附近的IF(EXISTS(SELECT * FROM facebookqs WHERE email ='test'))THEN UPDATE faceb。 - Trey
如果你注意到我在更新语句的WHERE子句和电子邮件列名之间不小心删除了空格,那么如果你逐字复制我的代码,这可能是你的问题。 - John Hartsock
1
是的,我注意到了,但还是不行。似乎一旦存在部分出现,我就开始出现错误。 - Trey
1
@Trey 你是在使用这个IF语句而不是MySQL的存储过程吗?我曾经犯过同样的错误,也遇到了语法错误。你必须创建一个包含这个IF块的存储过程。请参考https://dev59.com/aHXYa4cB1Zd3GeqP-Mq8#18288088。 - Tushar Goswami

1

0

您是否只需要选择电子邮件列?还是您有多个包含电子邮件地址的列?如果您有多个带有电子邮件的列,则需要说明 col1Email = '$email' 或 col2Email='$email' ...等。要获取行数,请尝试使用以下查询语句:SELECT COUNT(*) from facebookqs where col1Email = '$email' or col2Email='$email'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接