带有if语句的MySQL存储过程

may*_*ʎɐɯ 6 mysql sql stored-procedures

我在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;
Run Code Online (Sandbox Code Playgroud)

存储过程有2(IN)输入,kid_Id(整数)和received_Date(日期),它工作正常.

问题:我想要的是,如果received_Date是,NULL那么我想查看所有日期,这可能吗?

换句话说:

AND rewards.received_at = received_Date如果我通过应只工作received_Date,否则返回所有日期.

Pரத*_*ீப் 2

尝试这个。使用OR运算符 inwhere clause获取所有行,如果received_Date is null

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;
Run Code Online (Sandbox Code Playgroud)