我有一个存储过程,我正在进行简单的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
如果没有找到数据,我知道如何才能返回结果吗?
更新
问题似乎与COUNT
行有关。当我从查询中删除它时,它返回一个空结果(正确的行为)。