目前我有这个声明
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 语句应仅返回一行。在您的情况下,它可能会返回多行,因此失败。以下重写的查询接近您感兴趣的内容:
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>