我有一个SQL查询。我使用PHP函数来运行它,那里有两个PHP变量。有时其中一个PHP变量将为零,这将不会产生任何结果。有一种方法可以调整它,这样如果该变量为零,它将根据其他条件返回所有记录吗?
SELECT
`author`.name,
`author`.id,
`category`.name as cat_name
FROM
`post`
INNER JOIN `author` ON (`author`.id = `post`.author)
INNER JOIN `category` ON (`category`.id = `post`.category_id)
WHERE `author`.site_id='".$site_id."' AND `post`.category_id='".$category_id."'
AND `category`.id <> 0
GROUP BY `post`.author
当$ category_id等于零时,我想要的是返回author.site_id等于$ site_id的所有记录。
答案 0 :(得分:1)
您可以这样做:
WHERE (`author`.site_id = '".$site_id."' OR $site_id = 0) AND
(`post`.category_id = '".$category_id."' OR $category_id = 0) AND
`category`.id <> 0
更典型地,NULL
用于缺失值,而不是0
。同样的想法适用于NULL
。 。 。您只需使用IS NULL
代替= 0
。