簡體   English   中英

如果存在更新,否則插入mysql

[英]if exists update else insert mysql

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語法有誤; 在第1行上,檢查與您的MySQL服務器版本相對應的手冊,以獲取在'IF EXISTS(SELECT * FROM two_player WHERE title ='math'並且user2為null)'附近使用的正確語法。

為什么?! 那有什么選擇呢?

您可以使用存儲過程來解決此問題,如下所示

    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();

使用替換代替更新或插入:-

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM