Mysql IF EXISTS那么

时间:2014-04-20 19:25:18

标签: mysql

所以 - 我的代码有问题。我正在控制台中直接测试并获得“语法错误”

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'IF EXISTS附近(SELECT * FROM user_inventory WHERE resource_id ='6'   AND uid ='1')T'在第1行

IF EXISTS(SELECT * FROM user_inventory WHERE resource_id = '6' AND uid ='1') 
THEN UPDATE user_inventory SET resource_count = resource_count+1 WHERE resource_id = 6 AND uid = 1
ELSE INSERT INTO user_inventory(uid, resource_id, resource_count) VALUES (1, 6, 1);

我之前从未使用过IF EXISTS条款......所以我不确定我做错了什么。

1 个答案:

答案 0 :(得分:4)

SQL IF语句只能在stored program内使用。您不能像在尝试的那样在通用SQL上下文中使用它。

但是,您无需在此处使用IF

  1. user_inventory表格中定义合适的唯一性约束:

    ALTER TABLE user_inventory ADD UNIQUE (uid, resource_id)
    
  2. 使用INSERT ... ON DUPLICATE KEY UPDATE

    INSERT INTO user_inventory
      (uid, resource_id, resource_count)
    VALUES
      (1, 6, 1)
    ON DUPLICATE KEY UPDATE
      resource_count = resource_count + 1
    
相关问题