Mysql 如果不存在,则不工作

Mysql 如果不存在,则不工作,mysql,sql,not-exists,Mysql,Sql,Not Exists,我正在phpMyAdminSQL区域中尝试上述查询。我正在使用xampp。这样说是错误的 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 “如果存在,则从用户处选择*附近” 从第1行的“使用”中选择名称 我也尝试了下面的代码 IF NOT EXISTS(SELECT * FROM `user` WHERE `name`='Rutvij' AND `lang`='python') BEGIN INSERT INTO `use

我正在phpMyAdminSQL区域中尝试上述查询。我正在使用xampp。这样说是错误的

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 “如果存在,则从用户处选择*附近” 从第1行的“使用”中选择名称

我也尝试了下面的代码

IF NOT EXISTS(SELECT * FROM `user` WHERE `name`='Rutvij' AND `lang`='python')
    BEGIN
        INSERT INTO `user` VALUES ('Rutvij', 'python', 25)
    END
ELSE
    BEGIN
        UPDATE user SET `name`='Kanzaria' WHERE `name`='Rutvij'
    END

挣扎了这么久。请帮忙。谢谢

这不是一个查询,这将是一个带有控制流逻辑的sql脚本,mysql中不允许在存储程序、过程、函数和触发器之外使用该脚本。即使将上述代码封装到存储过程中,它也不会工作,因为exist/notexists只能在子查询中使用

我会这样做:

创建一个 声明一个整数变量 使用将name='Rutvij'和lang='python'所在的行数提取到变量中。 使用if语句根据记录数进行插入。 MySQL不允许if逻辑,除非您在编程块存储过程、触发器或函数中

幸运的是,您可以对WHERE逻辑执行相同的操作:

MySQL应该在插入之前处理SELECT,因此只能插入一行

或者,您可以将其作为两个插入,但顺序相反:

INSERT INTO user 
    SELECT 'Rutvij', 'python', 25
    FROM DUAL
    WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python')
    UNION ALL
    SELECT 'Kanzaria', 'python', 25
    FROM DUAL
    WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');

if作为路由选项Not该函数只在过程和触发器中工作。您可能还需要查看REPLACE-into。我想您需要在mysql中使用if的then语句?如果我想在记录存在时更新该怎么办?那我该怎么办?如果不存在,则插入else更新。@RutvijKanzaria。您将使用插入。在重复密钥更新时。
INSERT INTO user 
    SELECT 'Rutvij', 'python', 25
    FROM DUAL
    WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python')
    UNION ALL
    SELECT 'Kanzaria', 'python', 25
    FROM DUAL
    WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');
INSERT INTO user 
    SELECT 'Kanzaria', 'python', 25
    FROM DUAL
    WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');

INSERT INTO user 
    SELECT 'Rutvij', 'python', 25
    FROM DUAL
    WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');