MySql 使用where子句過濾資料

2021-10-06 19:26:07 字數 2966 閱讀 1646

示例使用的資料表在上乙個部落格中建立的

示例如下:查詢**等於10.5的行

select * from commodity where price=10.5

輸出:1 1001 牙刷 10.5

上個示例中,我們使用到了『=』這個操作符,下面列出所有條件操作符

where操作符 =

等於<>

不等於!=

不等於<

小於》大於<=

小於等於

>=

大於等於

between

在指定的兩個值之間

在mysql中,檢查欄位是不區分大小寫的

比如:where name=『ys』的結果和where name='ys'是一樣的。我的資料當中沒有字母,所以不做演示了。

如下,查詢typeid不等於1001的所有行

select * from commodity where typeid<>1001

其輸出結果和!=是一樣的:

select * from commodity where typeid!=1001

都是輸出:

3 1002 茶几 999.9

4 1003 電視 3199

5 1003 冰箱 2999

6 1004 1 手機 1999

7 1004 2 手機 7699

8 1004 .3 手機 699.9

9 1005 t恤 21.5

10 1005 牛仔褲 99

如下,查詢typeid在1002和1004之間的所有行,包括1002和1004

select * from commodity where typeid between 1002 and 1004

輸出:3 1002 茶几 999.9

4 1003 電視 3199

5 1003 冰箱 2999

6 1004 1 手機 1999

7 1004 2 手機 7699

8 1004 .3 手機 699.9

必須指定兩個值,乙個低端值和乙個高階值,中間必須用and連線。

如下,檢查name為null的行,注意需要用is null。不是用=

select * from commodity where name is null

會輸出所有name欄位為null的行

上面的所有示例都是單個查詢條件,但是實際中肯定會出現不止乙個查詢條件,這時候就可以用andor來組合where子句

示例1,查詢**大於20的1001型商品

select * from commodity where price>20 and typeid=1001

輸出:2 1001 毛巾 21.5

示例2,查詢**大於3000的1003型商品或1004型商品

select * from commodity where typeid=1003 or typeid=1004 and price>3000

大家仔細看看上面的**,似乎沒什麼問題,型別等於1003或型別等於1004並且**大於3000

輸出結果:

4 1003 電視 3199

5 1003 冰箱 2999

7 1004 2 手機 7699

但是從結果看是錯誤的,這是由於計算次序的問題。在mysql中and擁有更高的優先順序,所以看似沒問題的組合被mysql錯誤的組合了,where後面的條件可以看成

(price>3000 and typeid=1003) or typeid=1004

可以用小括號來組合where後面的條件,小括號具有比and和or更高的優先順序

所以,正確的寫法如下:

select * from commodity where (typeid=1003 or typeid=1004) and price>3000

輸出:4 1003 電視 3199

7 1004 2 手機 7699

in用來指定條件範圍

如下,查詢商品型別等於1001,1002的所有行

select * from commodity where typeid in (1001,1002)

輸出:1 1001 牙刷 10.5

2 1001 毛巾 21.5

3 1002 茶几 999.9

需要注意的是,大家不要當成between的另外一種寫法,小括號中可以有n個值,用逗號隔開,最後會返回指定字段出現在小括號中的所有行。

in和or的功能其實有些相同,但是in在遇到更多條件時會顯得更加簡潔。而且in的執行效率更快,最大的優點是可以包含select語句。比如小括號裡面你不確定是哪些值,需用實時的查詢,那麼select語句就可以寫在小括號裡面。

not用來否定後面跟著的條件。

如下,查詢商品型別不等於1001,1002的所有行

select * from commodity where typeid not in (1001,1002)

輸出:4 1003 電視 3199

5 1003 冰箱 2999

6 1004 1 手機 1999

7 1004 2 手機 7699

8 1004 .3 手機 699.9

9 1005 t恤 21.5

10 1005 牛仔褲 99

not支援對between、in、exists的取反。

where子句查詢

使用where關鍵進行查詢結果篩選 select 欄位名,欄位名,from表名 where 篩選條件 單條件篩選 單篩選條件 使用運算子進行篩選 單個條件中 注意 如果條件中的值為字元,必須使用單引號括起來 查詢所有的員工的工資資訊 select empno,ename,sal comm as 薪資...

Mysql效能優化 where子句優化

a and b and c or a and b and c and d a and b and c or a and b and c and d aand b c and a 5 b 5 and b c and a 5 b 5 and b 5 or b 6 and5 5 or b 7 and5 6...

SQL 過濾資料(使用WHERE子句)

只檢索所需要資料需要指定搜尋條件,搜尋條件也稱為過濾條件。在select語句中,資料根據where子句中指定的搜尋條件進行過濾,即where 子句用於過濾記錄,也就是where 子句用於提取那些滿足指定標準的記錄。where子句在表名 from子句 之後給出。where子句不僅用於select語法,...