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;
用户和产品的典型场景,如果用户没有分配任何产品但它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;