我表格中的数据示例
post_id|post_title|post_status
1 i 1
2 love 0
3 sof 0
我遇到(OR)
的问题我正在尝试这种情况
WHERE post_status = '1' AND post_id = '1' OR post_title = 'i';
//it should return with i
// but it returned with love,sof
问题是由于条件
末尾的(OR)引起的它已被禁用条件的早期部分
那么,我如何正确使用OR?
我希望通过post,id和post_title
列搜索帖子由于某种原因,我无法将post_status='1'
移到条件的最后,它应该在开始时
答案 0 :(得分:6)
您只需要使用()
进行逻辑分组,否则OR
条件(无论何时为真)将取代所需条件post_status = 1
,无论其是否匹配。
WHERE post_status = '1' AND (post_id = '1' OR post_title = 'i');
在构造多部分WHERE
子句时,您应始终考虑逻辑组和优先级,尤其是在使用逻辑OR
时,因为它可能会快速破坏您的子句的其余部分。
答案 1 :(得分:3)
AND
的优先级高于OR
,因此您的查询实际上是
WHERE (post_status = '1' AND post_id = '1') OR post_title = 'i';
似乎你正在尝试:
WHERE post_status = '1' AND (post_id = '1' OR post_title = 'i');
所以只需使用显式大括号