2017-07-28 112 views
0

拜託,我不明白爲什麼它不工作:if語句在MySQL INSERT不工作

SET @key = (SELECT customer.key_stamp FROM customer WHERE customer.key_stamp = "0000"); 
    CASE WHEN (@key > 0) THEN 
     INSERT INTO transaction 
           (transaction.to, transaction.key, transaction.type, transaction.cost_bitcoin, transaction.quantity) 
           VALUES ("0000", "f5rwsd", 2, 0.0075, 
             (500000 + 
              (
               (SELECT bonus.amount 
                FROM bonus 
                WHERE 500000 BETWEEN bonus.min_quantity AND bonus.max_quantity 
               )/500000 
              ) * 100)) 
    END; 

我嘗試了case語句,但它仍然沒有工作,我無法理解問題。 請幫忙。

+0

'it does not work'的定義是什麼?預期的產出或行爲是什麼?你究竟得到了什麼? –

+0

您的問題不是案例陳述,但您是如何嘗試將密鑰戳值分配給'@ key'變量 - 請參閱此處:https://stackoverflow.com/questions/10741612/set-the-result-of- a-query-to-a-variable-in-mysql –

+0

儘管現在我已經說過case語句需要用'END CASE'關閉 –

回答

1

其實現在我使用只是一個sql函數,它現在工作,所有的工作,切換案例mysql,如果else語句的mysql,並循環太多,像while while或LOOP ITERATE,所有的工作,只需要使用它在SQL函數,或SQL過程。

1

CASE不是有效的MySQL語句。 (這不是在MySQL存儲程序的上下文之外的有效聲明。)

爲什麼它不工作」...是因爲它不是有效的SQL。

CASE表達可以在一個表達允許一個SQL語句中使用。 (在SQL中,一個表達式返回一個特定的數據類型的值。)


作爲在SQL語句中使用CASE表達,像這樣的一個示例:

SELECT CASE WHEN @key > 0 THEN 'somevalue' ELSE 'othervalue' END AS foo 
+0

mysql實際上有一個case語句(https://dev.mysql.com/doc/refman/5.7/en/case.html)和一個case表達式(https://dev.mysql.com/doc/refman/ 5.7/en/control-flow-functions.html#operator_case) –

+0

我需要插入語句,我希望當它的背後真實,插入,當falce,什麼都不做,並且我不是理解它是如何做的,以前的SELECT是不是很有幫助,因爲我沒有選擇任何東西。 –