上一篇:【MySQL必知必會(三)】【過濾資料】
文章目錄
- 一、 資料過濾
- 1.1 組合WHERE子句
- 1.1.1 AND運算子
- 1.1.2 OR運算子
- 1.1.3 計算次序
- 1.2 IN運算子
- 1.3 NOT運算子
一、 資料過濾
如何組合WHERE子句以建立功能更強的更高級的搜索條件和如何使用NOT和IN運算子
1.1 組合WHERE子句
MySQL允許給出多個WHERE子句,以AND子句的方式或OR子句的方式使用
1.1.1 AND運算子
通過不止一個列進行過濾
mysql> SELECT prod_id, prod_price, prod_name
-> FROM products
-> WHERE vend_id = 1003 AND prod_price <= 10;

1.1.2 OR運算子
匹配任一條件的行
mysql> SELECT prod_name, prod_price
-> FROM products
-> WHERE vend_id = 1002 OR vend_id = 1003;

1.1.3 計算次序
WHERE可含任意數目的AND和OR運算子
mysql> SELECT prod_name, prod_price
-> FROM products
-> WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

分析
回傳的行中有兩行價格小于10美元,回傳的行未按預期的進行過濾,SQL理解為由供應商1003制造的任何價格為10美金及以上的產品,或者由供應商1002制造的任何產品,
AND在計算次序中優先級更高,運算子被錯誤地組合
mysql> SELECT prod_name, prod_price
-> FROM products
-> WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;

1.2 IN運算子
IN運算子用來指定條件范圍,范圍中的每個條件都可以進行匹配
mysql> SELECT prod_name, prod_price
-> FROM products
-> WHERE vend_id IN (1002,1003)
-> ORDER BY prod_name;

IN運算子完成與OR相同的功能
mysql> SELECT prod_name, prod_price
-> FROM products
-> WHERE vend_id = 1002 OR vend_id = 1003
-> ORDER BY prod_name;

1.3 NOT運算子
WHERE子句中的NOT運算子有且只有一個功能,否定它之后的任何條件
mysql> SELECT prod_name, prod_price
-> FROM products
-> WHERE vend_id NOT IN (1002,1003)
-> ORDER BY prod_name;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/72763.html
標籤:其他
下一篇:mySql事務處理TPL的小總結
