为什么会发生这种情况?我不知道为什么我的语法出错了,当我想在我的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
答案 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';