MySQL IF语句检查多行

时间:2015-04-07 07:20:30

标签: mysql if-statement

我正在使用MySQL程序,其中SELECT * FROM progress where case_id = current_data;的结果如下表所示。

+-----------------------------------------------------+
| id_progress | task_id | case_id | user_id | current |
+-----------------------------------------------------+
| 247         | 4       | 1002    | 1       | 0       |
| 248         | 1       | 1002    | 1       | 0       |
| 249         | 2       | 1002    | 1       | 0       |
| 250         | 3       | 1002    | 1       | 0       |
+-----------------------------------------------------+

我想创建一个IF语句来检查current表。如果所有行都等于'0'

但我不知道如何继续。在IF语句中使用select 在我看来很奇怪。

2 个答案:

答案 0 :(得分:1)

您可能只想汇总结果,以便SELECT只返回一个值。

例如,以下内容返回NonZero行的数量。然后,您要检查没有NonZero行。

IF ( (SELECT SUM(CASE WHEN current = 0 THEN 0 ELSE 1 END)
        FROM progress
       WHERE case_id = current_data
     )
     =
     0
   )

答案 1 :(得分:0)

试试这个:

SELECT IF( EXISTS(
             SELECT *
             FROM current
             WHERE current_data = 0), 1, 0)

IF (SELECT 1 = 1 FROM current WHERE current_data = 0) THEN
BEGIN
    SELECT * FROM progress where case_id = current_data;
END;
ELSE
BEGIN
    //some other code 
END;
END IF;