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')
此查询在sql server中正常工作。但是我在mysql中遇到了这个错误:
*#1064 - 您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在第1行“IF EXISTS(SELECT * FROM two_player WHERE title ='math'和user2为null)附近使用正确的语法”
为什么? 有什么替代方案?
答案 0 :(得分:1)
您可以使用商店程序解决此问题,如下所示
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 ;
并将其称为:
call select_or_insert();
答案 1 :(得分:0)
使用替换而不是更新或插入: -
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')