mysql if语句失败,不知道如何修复

时间:2012-10-31 03:13:18

标签: mysql if-statement

目前我有这个声明

IF(0.5 < SELECT (FLOOR(10*RAND()*pResourcium) AS TestVar FROM siegeverse.rooms rm) AS T))
THEN SELECT 'TEST'

知道它失败的原因吗?如果所选元素大于0.5

,尝试让它为每一行输出测试

谢谢!

1 个答案:

答案 0 :(得分:4)

此类标量比较上下文中的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>