我正在尝试在MySQL数据库上运行查询,但我发现它似乎忽略了'status'项.
SELECT * FROM `posts`
WHERE
`tags` LIKE '%gda%'
OR `tags` LIKE '%contests%'
OR `tags` LIKE '%merch%'
AND `newsID` != '2134'
AND `status` > '1'
ORDER BY `postDate` DESC LIMIT 5
Run Code Online (Sandbox Code Playgroud)
在那个例子中,即使'status'设置为0,它仍然会拉动项目.我做错了什么?
问题在于OR/ AND条件的优先级.AND具有更高的优先级OR,这就是为什么它首先评估由AND(tags-merch,newsID-2134和status-1)连接的所有条件,然后评估两个tags-gda和tags-contests.
尝试添加括号:
SELECT *
FROM `posts`
WHERE (`tags` LIKE '%gda%'
OR `tags` LIKE '%contests%'
OR `tags` LIKE '%merch%')
AND `newsID` != '2134'
AND `status` > '1'
ORDER BY `postDate` DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17833 次 |
| 最近记录: |