我在下面有一个MySQL查询。我的q.catid = 13
(category_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
答案 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%"