Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果存在更新,则插入mysql_Mysql_Sql Server_If Statement_Sql Update_Exists - Fatal编程技术网

如果存在更新,则插入mysql

如果存在更新,则插入mysql,mysql,sql-server,if-statement,sql-update,exists,Mysql,Sql Server,If Statement,Sql Update,Exists,此查询在sql server中正常工作。但是我在mysql中遇到了这个错误: *1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行“如果存在,请从两个播放器中选择*,其中title='math'和user2为空”附近使用的正确语法 为什么?! 替代方法是什么?使用替换,而不是更新或插入:- IF EXISTS (SELECT * FROM two_player WHERE title='math' and user2 is null) UPDATE tw

此查询在sql server中正常工作。但是我在mysql中遇到了这个错误:

*1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行“如果存在,请从两个播放器中选择*,其中title='math'和user2为空”附近使用的正确语法

为什么?!
替代方法是什么?

使用替换,而不是更新或插入:-

IF EXISTS (SELECT * FROM two_player  WHERE title='math' and user2 is null)
 UPDATE two_player  SET score2='50' , user2='zahra' WHERE title='math' and user2 is null
 ELSE  
 INSERT INTO two_player  (user1,score1,title) values ('zahra', '50', 'math')
在这种情况下,您必须具有唯一索引

根据您的编程语言,请尝试以下方法:-

REPLACE INTO two_player  (user1,user2,score1,score2,title) values ('zahra', 'zahra','50','50', 'math')

您可以使用存储过程来解决此问题,如下所示

UPDATE two_player  SET score2='50' , user2='zahra' WHERE title='math' and user2 is null

if updates_rows == 0:  
      INSERT INTO two_player  (user1,score1,title) values ('zahra', '50', 'math')
这样称呼它:

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `select_or_insert`$$
    CREATE PROCEDURE select_or_insert()
    begin

    IF EXISTS (SELECT * FROM test WHERE id="id") THEN
       SELECT * FROM test WHERE id="id";
    ELSE
       INSERT INTO test (id,name) VALUES ("id",'name');
    END if;

    END$$

   DELIMITER ;

是的,还有其他选择。不要在数据库层中执行逻辑如果mysqlI中存在sql server,则很难更新sql server。我收到以下错误:1064-您的sql语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第3行“if updates_rows==0:INSERT INTO two_player user1,score1,title valu”附近使用的正确语法。我向您提供的是示例,而不是queyif updates_rows==0:将用于编程,无论您使用什么。谢谢!当我在phpMyAdmin的sql选项卡中运行该查询时,它可以正常工作。但是当php文件中的mysqli_查询函数执行此查询时,我得到了以下错误:您的SQL语法中有一个错误;检查与您的MySQL服务器版本相对应的手册,了解使用“DELIMITER$$\n DROP PROCEDURE IF EXISTS select\u或\u insert$$\n CREATE PROCED”的正确语法,第1行我对PHP没有任何概念,您可以在谷歌上搜索如何在PHP中调用存储过程
call select_or_insert();