表中数据的示例
post_id|post_title|post_status
1 i 1
2 love 0
3 sof 0
我有问题(或)
我正在尝试这个条件
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'
移动到条件的末尾,它应该在增益
你只需要用()
进行逻辑分组,否则,无论是否匹配,OR
条件(无论何时为真)都将取代所需的条件post_status = 1
。
WHERE post_status = '1' AND (post_id = '1' OR post_title = 'i');
在构造多部分WHERE
子句时,您应该始终考虑逻辑组和优先级,尤其是在使用逻辑OR
时,因为它会迅速破坏子句的其余部分。
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');
所以只需使用明确的大括号