目前我有這個說法MySQL的if語句失敗,不知道如何解決
IF(0.5 < SELECT (FLOOR(10*RAND()*pResourcium) AS TestVar FROM siegeverse.rooms rm) AS T))
THEN SELECT 'TEST'
任何想法,爲什麼它失敗的原因?如果所選元素大於0.5,則嘗試將其輸出到每個行的測試。
謝謝!
目前我有這個說法MySQL的if語句失敗,不知道如何解決
IF(0.5 < SELECT (FLOOR(10*RAND()*pResourcium) AS TestVar FROM siegeverse.rooms rm) AS T))
THEN SELECT 'TEST'
任何想法,爲什麼它失敗的原因?如果所選元素大於0.5,則嘗試將其輸出到每個行的測試。
謝謝!
這種標量比較上下文中的SELECT語句應該只返回一行。在你的情況下,它可能會返回多行,因此失敗。以下重寫的查詢與您感興趣的內容很接近:
IF EXISTS (SELECT *
FROM
(SELECT
CASE
WHEN (FLOOR(10*RAND()*pResourcium) >= 0.5 THEN 'TEST'
ELSE NULL
END AS TestVar
FROM
siegeverse.rooms rm
) AS A
WHERE A.TestVar IS NOT NULL)
THEN
<run the stored procedure>
爲什麼你認爲這應該起作用?請參閱['mysql IF語句語法'](http://dev.mysql.com/doc/refman/5.6/en/if.html) – Nemoden