Mysql 如果不存在,则不工作
我正在phpMyAdminSQL区域中尝试上述查询。我正在使用xampp。这样说是错误的 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 “如果存在,则从用户处选择*附近” 从第1行的“使用”中选择名称 我也尝试了下面的代码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
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');