组合WHERE子句

AND操作符

1
2
3
SELECT prod_id, prod_price, prod_name
FROM products
WHERE vend_id = 1003 AND prod_price <= 10;

OR操作符

1
2
3
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;

计算次序

  • SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。
1
2
3
SELECT prod_name, prod_price
FROM products
WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;

IN操作符

1
2
3
4
SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
ORDER BY prod_name;
  • IN操作符与OR操作符完成的功能相同。
  • 为什么要使用IN操作符?
    1. 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观;
    2. 在使用IN时,计算的次序更容易管理(因为使用的操作符更少);
    3. IN操作符一般比OR操作符清单执行更快;
    4. IN的最大优点是可以包含其他SELECT语句,使得能够更动态的建立WHERE子句。

NOT操作符

1
2
3
4
SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY prod_name;
  • NOT:WHERE子句中用来否定后跟条件的关键字。
  • MySQL中的NOT:MySQL支持使用NOTINBETWEENEXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大差别。