MySQL存储过程返回空行而不是根本没有行

时间:2018-01-13 22:21:51

标签: mysql stored-procedures

我有一个存储过程,我正在进行简单的AJAX用户搜索。

该过程基于几个不同的字段进行查询,然后使用“LIKE”根据搜索字词查找内容。

当我返回结果时,如果没有找到任何结果,它将返回所有null的单行,而不是完全没有行。

CREATE DEFINER=`root`@`localhost` PROCEDURE `searchCustomerOrders`(IN in_term varchar(60))
BEGIN
    SELECT  u.first_name as firstName, 
                    u.last_name as lastName, 
                    os.status, 
                    o.orderID, 
                    CASE WHEN COUNT(op.orderID) = 0 THEN null ELSE COUNT(op.orderID) END as qty
    FROM `order` as o
    JOIN order_product as op
    ON o.orderID = op.orderID
    JOIN order_status as os
    ON o.statusID = os.statusID
    JOIN users as u
    ON o.userID = u.ID
    WHERE 
        o.orderID LIKE CONCAT('%', in_term, '%')
        or
        u.last_name LIKE CONCAT('%', in_term, '%')
        or
        u.first_name LIKE CONCAT('%', in_term, '%')
        or
        u.last_name + ', ' + u.first_name LIKE CONCAT('%', in_term, '%')
        or
        os.status LIKE CONCAT('%', in_term, '%');
END

enter image description here

如果没有找到数据,我知道如何才能返回结果吗?

更新

问题似乎与COUNT行有关。当我从查询中删除它时,它返回一个空结果(正确的行为)。

0 个答案:

没有答案