php - MySQL 注册案例

标签 php mysql sql

我通过 Facebook 登录身份验证 注册用户并且运行良好。

我存储 facebook_idfacebook_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

最佳答案

您所询问的操作称为 "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/

相关文章:

php - 灯箱上的表格

php - 使用 htaccess 的 CakePHP 子域

php - Mysqli 显示一行中的表内容和未从数据库中检索到的列名

mysql - 无法在mysql表上创建外键

php - Mysql - PHP 查询

php - 在 foreach 循环中删除数组元素

php - 输入的数字与数据库中旧数字的总和

慢查询的MYSQL查询优化

python - 创建新表(模型)并将其与 Django 中的 auth_user 相关联

sql - 如何使用 'group by'(或类似的)语句来聚合几个指定的行?