現在、私はこの声明を持っています
IF(0.5 < SELECT (FLOOR(10*RAND()*pResourcium) AS TestVar FROM siegeverse.rooms rm) AS T))
THEN SELECT 'TEST'
なぜ失敗しているのか分かりますか?選択した要素が0.5より大きい場合、各行のテストを出力しようとしています
ありがとう!
現在、私はこの声明を持っています
IF(0.5 < SELECT (FLOOR(10*RAND()*pResourcium) AS TestVar FROM siegeverse.rooms rm) AS T))
THEN SELECT 'TEST'
なぜ失敗しているのか分かりますか?選択した要素が0.5より大きい場合、各行のテストを出力しようとしています
ありがとう!
このようなスカラー比較コンテキストのSELECTステートメントは、1行のみを返す必要があります。あなたの場合、複数の行を返す可能性があるため、失敗します。次の書き直されたクエリは、興味のあるものに近いものです。
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>