Mysql 在CS50中学习SQL:RuntimeError:near“IF”:语法错误

Mysql 在CS50中学习SQL:RuntimeError:near“IF”:语法错误,mysql,cs50,Mysql,Cs50,我正在尝试创建一个名为stock的表,该表记录某人在购买一定数量的股票后持有的股票数量。这是迄今为止我尝试过的最复杂的SQL代码,我认为我写错了什么。有人能发现错误吗 db.execute("IF EXISTS (SELECT * FROM stock WHERE symbol = :symbol AND userid = :userid) UPDATE stock SET (amount = amount + 1) WHERE userid = :userid ELSE I

我正在尝试创建一个名为stock的表,该表记录某人在购买一定数量的股票后持有的股票数量。这是迄今为止我尝试过的最复杂的SQL代码,我认为我写错了什么。有人能发现错误吗

db.execute("IF EXISTS (SELECT * FROM stock WHERE symbol = :symbol AND userid = :userid) 
    UPDATE stock SET (amount = amount + 1) WHERE userid = :userid 
    ELSE INSERT INTO stock (userid, symbol, amount) 
    VALUES ((SELECT id FROM users WHERE id = :userid), 
        :symbol, :amount", userid = session["user_id"], symbol = symbol, amount = share_number)

您缺少一个括号

INSERT INTO stock (userid, symbol, amount) 
VALUES ((SELECT id FROM users WHERE id = :userid), :symbol, :amount
而不是 从users中选择id,其中id=:可以简单地编写的userid

INSERT INTO stock (userid, symbol, amount) 
VALUES (:userid, :symbol, :amount)

mysql中的IF是一个函数IFcondition、value\u IF\u true、value\u IF\u false和not语句IFWelcome to SO!您能为您的特定DBMS mysql、sqlserver、oracle等添加标签吗。。因为有些sql特性非常具体?还有,cs50标签是否正确?