Php 来自具有LIKE子句的类别的MySQL请求
下面我有一个MySQL查询。MyPhp 来自具有LIKE子句的类别的MySQL请求,php,mysql,sql,Php,Mysql,Sql,下面我有一个MySQL查询。Myq.catid=13(category\u 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 `#__user
q.catid=13
(category\u 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
因为
和
绑定比或
强。它被称为运算符优先级
使用括号
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%"
因为
和
绑定比或
强。它被称为运算符优先级
使用括号
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%"
为什么使用
WHERE 1=1
?@Havenard,这是查询生成器中的一种常见构造-这意味着附加子句的前缀总是和.OP,如果您可以在不使用标记设备(即条形图)的情况下编写问题标题,这将非常有用。这已经在Meta上进行了广泛的讨论,社区更喜欢没有标题的标题。如果你能像普通英语一样理解这个单词,或者把它作为一个问题来回答,那么在这里效果最好。谢谢为什么使用WHERE 1=1
?@Havenard,这是查询生成器中的一种常见构造-这意味着附加子句的前缀总是和.OP,如果您可以在不使用标记设备(即条形图)的情况下编写问题标题,这将非常有用。这已经在Meta上进行了广泛的讨论,社区更喜欢没有标题的标题。如果你能像普通英语一样理解这个单词,或者把它作为一个问题来回答,那么在这里效果最好。谢谢