题
因此,这是我的查询,这并不重要,如果批准设定为0或1它将得到我的所有行无论如何
SELECT *
FROM `tutorials`
WHERE tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php'
AND approved=1
我猜这是因为,或者,但我可能是错误的,如果有人可以帮我这个:)
解决方案
尝试括号
SELECT *
FROM `tutorials`
WHERE ( tags LIKE '% php %'
OR tags LIKE 'php %'
OR tags LIKE '% php'
OR tags = 'php'
)
AND approved=1
其他提示
我觉得你缺少了一些冒号:
SELECT *
FROM `tutorials`
WHERE (tags LIKE '% php %' OR tags LIKE 'php %' OR tags LIKE '% php' OR tags = 'php')
AND approved=1
你应该包括号,因为或者和经营者在相同级别的优先。当你省略号,你的查询进行分析:
SELECT *
FROM `tutorials`
WHERE (tags LIKE '% php %' OR (tags LIKE 'php %' OR (tags LIKE '% php' OR (tags = 'php'
AND approved=1))))
尤其是当使用长的名单或者和经营者在查询,最好是使用的冒号来让你意图明确的。对于一个完整的清单的操作人员优先在MySQL(这是一般常见于其他SQL dialects),请参阅 MySQL手册.
我没有得到你到底想要什么。但是,这可能是你正在寻找一个
SELECT * FROM
tutorials
WHERE 的(强> LIKE '%的PHP%' 标签或标签LIKE '%的PHP' OR标签LIKE '%的PHP' OR标记= 'PHP' 的)并批准= 1
不隶属于 StackOverflow