2017-03-31 55 views
0

爲什麼這發生在我身上?我不知道爲什麼我的語法得到錯誤的,當我想讓如果有條件的話在我的SQL我的語法錯誤,當我想如果條件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

是'status'默認設置爲'Available'? – toonice

+0

是的,它是@toonice – Onosibiw

回答

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' 
+0

謝謝你的作品,但爲什麼我的狀態沒有改變?我的狀態仍然「可用」,而我的數量已經<= 0 – Onosibiw

+0

謝謝!現在是工作,我只是把工作轉向定位 – Onosibiw

0

是的,那是因爲你不能使用IF .. ELSE程序結構在除了存儲過程或存儲函數之外的普通SQL查詢中。您可以使用條件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'; 
+1

檢查你的查詢,兩個SET語句存在。 – Mansoor

+0

@Mansoor,速度打字......感謝指點 – Rahul

+0

謝謝你的作品,但爲什麼我的狀態沒有改變?我的狀態仍然'可用',而我的數量已經<= 0 – Onosibiw