MySQL存储过程中的if语句

6

我在MySQL中有以下存储过程:

SELECT *
    FROM rewards
        LEFT JOIN tasks
        ON tasks.id = rewards.task_id
        AND rewards.received_at = received_Date
    WHERE tasks.kid_id = kid_Id
    ORDER BY tasks.id ASC;

该存储过程有2个(IN)输入: kid_Id (整数) 和 received_Date (日期),目前它的运行良好。

问题: 我想要的是,如果received_DateNULL,那么我希望能查看所有日期,这是否可能?

换句话说:

只有在传递received_Date时,AND rewards.received_at = received_Date才会起作用,否则将返回所有日期。

1个回答

2
尝试这个。在where子句中使用OR运算符,以便在received_Date为空时获取所有行。
SELECT *
    FROM rewards
        LEFT JOIN tasks
        ON tasks.id = rewards.task_id
                WHERE tasks.kid_id = kid_Id 
                AND (rewards.received_at = received_Date or received_Date = 0) 
    ORDER BY tasks.id ASC;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接