我有以下查询:
SELECT nfc_film.title, nfc_film.film_id, nfc_film.description, nfc_film.release_year, nfc_film.rating, nfc_film.last_update, nfc_category.name
FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_film_category.category_id = nfc_film_category.category_id
WHERE
nfc_film.title LIKE :searchterm
AND
nfc_category.name = :category
LIMIT 10
OFFSET :page
我知道IFNULL()函数。但是说一下:category是空还是null,我将如何进行查询,就好像该条件不存在一样。
就像If :category is null then don't search in nfc_category.name
答案 0 :(得分:0)
您可以更改您的WHERE
条件,以包含针对category
的空/空测试。如果为空或NULL
,则nfc_category.name = :category
的结果将是无关紧要的(应将其优化掉)。请注意,需要使用括号以避免运算符优先级问题。
(:category = '' OR :category IS NULL OR nfc_category.name = :category)
取决于您的PDO::ATTR_EMULATE_PREPARES
设置,您可能需要使用其他参数名称,例如:category0
,:category1
用于参数的第二和第三次使用。