select id,content,nickname from t_comment where id<11 and id>2;
select id,content,nickname,blog_id from t_comment where id>11 and blog_id=11;
select id,content,nickname from t_comment where id>11 or id<9;
where可包含任意数目的and和or操作。允许两者结合以进行复杂和高级的过滤。
select id,content,nickname,blog_id from t_comment where id>11 or id<9 and blog_id = 11;
显然上面的返回结果并没有按预期进行过滤。原因在于计算次序。SQL在处理or操作符前,优先处理and操作符。换句话说,由于and的优先级更高,操作符被错误的组合了。
正确操作方法,使用圆括号明确地分组相应地操作符
select id,content,nickname,blog_id from t_comment where (id>11 or id<9) and blog_id = 11;
select id,content,nickname,blog_id from t_comment where blog_id in (7,15) order by blog_id desc;
select id,content,nickname,blog_id from t_comment where blog_id not in (7,15) order by blog_id desc;
总结:本篇主要讲了如何使用and和or操作符,而且还讲了如何明确地管理计算的次序,如何使用IN和NOT操作符。