首页 > 解决方案 > MySQL 注册案例

问题描述

我通过注册用户Facebook Login Authentication并且运行良好。

我存储facebook_id,facebook_emailfacebook_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

标签: phpmysqlsql

解决方案


您询问的操作称为“合并”或“更新插入”。

假设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表中已经存在,则将更新该记录的电子邮件和生日。如果没有,将插入一条新记录。


推荐阅读