1.组合WHRER子句
SQL允许给出多个WHRER子句,这些子句有两种使用方式,即以AND子句或者OR子句方式使用。
1.1 AND 操作符
SELECT name, shop_price, category_id FROM goods_goods WHERE category_id = 7 and shop_price > 20;
筛选出商品类型为7,且价格大于20的所有数据。
结合排序语句
SELECT name, shop_price, category_id FROM goods_goods WHERE
category_id = 7 and shop_price > 20 ORDER BY add_time DESC;
category_id = 7 and shop_price > 20 ORDER BY add_time DESC;
将上一条语句结果按照加入时间降序排列。
1.2 OR 操作符
OR操作符与AND操作符正好相反,它指示数据库检索匹配任一条件下的行。事实上,很多db在OR WHERE 子句的第一个条件满足时,就不再计算第二个条件了。
SELECT title FROM blog_blogmodel WHERE title = 'Js计算器' OR category_id = 2;
这里返回了三条数据,一条是title满足第一个条件,而另外2条则是满足category_id=2的数据。
1.3 求值顺序
WHERE子句可以包含任意数目的AND或者OR操作符。允许两者结合以进行更复杂和高级的过滤。
假如需要列出价格为10即以上,且由DLL01或者BRS01制作的所有产品。SELECT语句 如下
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >=10;
上面语句查出的结果中,有4行价格小于4,显然不符合预期。原因是SQL会优先处理AND操作符。当SQL看到WHERE子句时,理解为:由供应商BRS01制造的价格为10即以上的所有产品,以及由供应商DLL01生产的商品。
知道原因,可以使用圆括号对操作符进行分组。
SELECT prod_name, prod_price FROM Products WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >=10;
这时,语句就变成了选择由供应商BRS01或DLL01的产品,且价格大于等于10。
2.IN操作符
IN操作符用来指定条件范围,范围内的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。
SELECT name, shop_price, category_id FROM goods_goods WHERE category_id IN (7, 15);
从goods表中查找出category_id=7或15的商品
IN(7, 15)与category_id = 7 OR category_id = 15的作用相同
IN操作符的优势:
- 再有很多选项时,更直观
- 在与AND或者OR组合使用时,求值顺序更容易管理
- IN操作符一般比一组OR操作符执行的更快
- IN的最大优点是可以包含其他SELECT语句,能更动态的建立WHERE子句。
3. NOT操作符
WHERE子句中的NOT操作符有且只有一个功能,就是否定其后所跟的任何条件。
SELECT name, category_id FROM goods_goods WHERE NOT category_id = 7;
查询出category_id不等于7的所有数据
评论列表
已有0条评论