具有LIKE子句的类别的MySQL请求

时间:2014-08-26 14:52:08

标签: php mysql sql

我在下面有一个MySQL查询。我的q.catid = 13category_id)但此查询会返回其他类别的结果。我的错误在哪里?

SELECT q.*, u.name, u.username, u.email, c.title AS category_name, COUNT(a.id) AS answers 
FROM `#__questions` AS q 
LEFT JOIN `#__answers` AS a ON a.question_id = q.id 
LEFT JOIN `#__users` AS u ON q.created_by = u.id 
LEFT JOIN `#__categories` AS c ON q.catid = c.id    
WHERE 1=1 
AND q.catid = 13 
AND q.title LIKE "%3%" 
OR q.introtext LIKE "%3%" 
GROUP BY q.id 
ORDER BY q.created DESC

1 个答案:

答案 0 :(得分:4)

因为and绑定比or强。它被称为运算符优先级

使用括号

WHERE 1=1 
AND q.catid = 13 
AND (q.title LIKE "%3%" OR q.introtext LIKE "%3%")

没有括号,您的查询目前已解析为

WHERE (1=1 AND q.catid = 13 AND q.title LIKE "%3%")
OR q.introtext LIKE "%3%"