因此,这是我的查询,这并不重要,如果批准设定为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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top