mysql if return false 如果没有找到记录

mysql if return false if no record found

用户和产品的典型场景,如果用户没有分配任何产品但它return是空的,我想查询 return 'false'。

serviceRequest.sql = "SET @productId = ?;\
     SELECT IF(product.productId = @productId, 'true', 'false') AS entitled FROM user_token \
     INNER JOIN user_product ON user_token.user_id = user_product.user_id \
     INNER JOIN product ON user_product.product_id = product.id AND authToken = ? AND product.productId = @productId;";

serviceRequest.values = [request.query.productId, request.query.authToken];

您可以使用 CASE 语句:

CASE WHEN product.productId IS NULL THEN 'False' ELSE 'True' END

您的 where 标准使其 return 为空而不是 false。这应该可以通过使用 outer joins 代替:

SELECT IF(ut.user_id IS NOT NULL, 'true', 'false') AS entitled 
FROM product p 
     LEFT JOIN user_product up ON p.id = up.product_id
     LEFT JOIN user_token ut ON up.user_id = ut.user_id 
                            AND ut.authToken = ?
WHERE p.productId = @productId;