我通过 Facebook 登录身份验证
注册用户并且运行良好。
我存储 facebook_id
、facebook_email
和 facebook_birthday
。
这是我想要运行的查询;
情况1:如果该用户的facebook_id存在于MySQL中,则更新facebook_email和facebook_birthday(以防它们发生变化)
情况2:如果MySQL中不存在该用户的facebook_id,则插入facebook_id、facebook_email和facebook_birthday
我尝试过,但没有发生。提前致谢。
SELECT facebook_id
CASE (SELECT COUNT(*) FROM user_facebook WHERE facebook_id = 123123123)
WHEN 0 THEN INSERT INTO user_facebook (facebook_id) VALUES (1233)
WHEN 1 THEN UPDATE user_facebook SET facebook_email = "123@gmail.com"
ELSE
END
FROM user_facebook
最佳答案
您所询问的操作称为 "merge"或“更新插入”。
假设 facebook_id
是主键,或者至少有一个唯一索引,您可以添加可选的 ON DUPLICATE KEY UPDATE
INSERT
语句的子句。
INSERT INTO user_facebook
(facebook_id, facebook_email, facebook_birthday)
VALUES (123123123, '123@gmail.com', '1998-05-02')
ON DUPLICATE KEY UPDATE
facebook_email = VALUES(facebook_email)
facebook_birthday = VALUES(facebook_birthday)
如果表中已存在 facebook_id
,则将更新该记录的电子邮件和生日。如果没有,将插入一条新记录。
关于php - MySQL 注册案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179662/