我想要条件sql时我的语法错误

时间:2017-03-31 13:03:45

标签: mysql sql database

为什么会发生这种情况?我不知道为什么我的语法出错了,当我想在我的sql中有条件的时候

IF quantity <= 0
    UPDATE tbl_books 
    SET status = 'Not Available'
ELSE 
    UPDATE tbl_books
    SET quantity = quantity -1
    WHERE isbn = 'tes1'

我收到了这样的错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF 'quantity' <= 0 UPDATE tbl_books SET status = 'Not Available' ELSE UPDA' at line 1

2 个答案:

答案 0 :(得分:2)

据推测,quantity不是变量。因此,它超出了if声明的范围。

您可以在一个update语句中执行此操作:

UPDATE tbl_books 
    SET status = (CASE WHEN quantity <= 0 THEN 'Not Available' ELSE status END),
        quantity = (CASE WHEN quantity > 0 THEN quantity - 1 ELSE quantity END)
    WHERE isbn = 'tes1'

答案 1 :(得分:0)

是的,这是因为除了存储过程或存储函数之外,您不能在普通SQL查询中使用IF .. ELSE过程构造。您可以使用条件SET之类的

UPDATE tbl_books 
SET status = case when quantity <= 0 then 'Not Available' else status end,
quantity = case when quantity > 0 then quantity -1 else quantity end
WHERE isbn = 'tes1';