自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)庫如何實(shí)現(xiàn)多字段過濾

數(shù)據(jù)庫 MySQL
我國(guó)移動(dòng)互聯(lián)網(wǎng)進(jìn)入了飛速發(fā)展階段,互聯(lián)網(wǎng)人才日益受到企業(yè)的重視,其中PHP開發(fā)人才便是其中之一,在互聯(lián)網(wǎng)旅游、金融、餐飲、娛樂、社交等一些新興企業(yè)與軟件開發(fā)企業(yè)中,PHP開發(fā)崗位相對(duì)占有核心地位,今天給大家分享的技術(shù)知識(shí)是——mysql數(shù)據(jù)庫如何實(shí)現(xiàn)多字段過濾。

我國(guó)移動(dòng)互聯(lián)網(wǎng)進(jìn)入了飛速發(fā)展階段,互聯(lián)網(wǎng)人才日益受到企業(yè)的重視,其中PHP開發(fā)人才便是其中之一,在互聯(lián)網(wǎng)旅游、金融、餐飲、娛樂、社交等一些新興企業(yè)與軟件開發(fā)企業(yè)中,PHP開發(fā)崗位相對(duì)占有核心地位,今天給大家分享的技術(shù)知識(shí)是——mysql數(shù)據(jù)庫如何實(shí)現(xiàn)多字段過濾。

1.多字段過濾查詢

類比現(xiàn)實(shí):查詢公司中戶籍是北京的、年齡超過30歲、性別是男的同事信息;

查詢場(chǎng)景:查詢商品名稱是'King doll'、商品價(jià)格是9.49的商品。

查詢SQL: 

  1. SELECT prod_id, prod_name, prod_price F ROM Products W HERE prod_name = 'King doll' AND prod_price = 9.49; 

查詢結(jié)果:

 

2.多字段過濾連接

WHERE字句中有多個(gè)字段進(jìn)行查詢過濾,過濾條件如何連接的呢?MySql允許給出多個(gè)WHERE字句進(jìn)行過濾,它們可以使用AND或者OR進(jìn)行連接!

AND連接類比現(xiàn)實(shí):飛鷹小學(xué)5年2班身高超過1米3、不戴眼鏡的男同學(xué)去操場(chǎng)上跑步。根據(jù)上述描述可以得出結(jié)論必須同時(shí)滿足身高超過1米3、不戴眼鏡、男生這三個(gè)條件的同學(xué)才需要去操場(chǎng)跑步,任何一個(gè)條件不滿足都不用去操場(chǎng)跑步。

OR連接類比現(xiàn)實(shí):飛鷹小學(xué)5年2班身高超過1米3或不戴眼鏡的同學(xué)去操場(chǎng)上跑步,根據(jù)上述描述可以得出結(jié)論只要滿足身高超過1米3,或不戴眼鏡這兩個(gè)條件中任意一個(gè)條件的學(xué)生就要去操場(chǎng)跑步,即身高超過1米3的同學(xué)要去跑步,不戴眼鏡的同學(xué)要去跑步。只要滿足任意一個(gè)條件就需要去操場(chǎng)可以!

2.1AND操作符

AND運(yùn)算符作用?用來指示檢索滿足所有給定條件的行。如果需要同時(shí)滿足多個(gè)過濾條件,只需要在過濾條件之間添加AND即可。

測(cè)試案例:查詢商品單價(jià)在2-5之間,商品數(shù)量大于等于10的訂單數(shù)據(jù)。

測(cè)試SQL: 

  1. SELECT * FROM OrderItems W HERE item_price B ETWEEN 2 AND 5 AND quantity >= 10 ORDER BY order_num DESC

測(cè)試結(jié)果:

結(jié)果說明:如果有多個(gè)過濾條件需要同時(shí)滿足,那么只需要在哪些過濾條件之間加上AND關(guān)鍵字即可,查詢條件理論上個(gè)數(shù)不限!

2.2OR操作符

OR操作符作用?用來指示檢索滿足任一給定條件的行。如果有多個(gè)過濾條件,那么需要過濾條件之間添加OR即可。

測(cè)試案例:查詢商品單價(jià)在3-5之間,或商品數(shù)量大于等于200的訂單數(shù)據(jù)。

測(cè)試SQL: 

  1. SELECT * F ROM OrderItems W HERE item_price B ETWEEN 3 AND 5 OR quantity >= 200 ORDER BY order_num DESC

測(cè)試結(jié)果:

結(jié)果說明:只要滿足商品單價(jià)在[3,5]之間,或者商品數(shù)量大于等于200的訂單都滿足條件。

2.3AND和OR進(jìn)行對(duì)比

AND必須滿足全部條件,OR只需要滿足任一條件。

類比理解:現(xiàn)在有一群黑色和白色的公企鵝,如果取走黑色母企鵝,即SELECT * FROM 企鵝 WHERE 顏色=黑色 AND 性別=母是查詢不到企鵝的,因?yàn)閮蓚€(gè)條件必須同時(shí)滿足,性別=母是沒有;如果要取走顏色是白色或性別是母的企鵝,即SELECT * FROM 企鵝 WHERE 顏色=白色 OR 性別=母,那么就可以將白色公企鵝查詢出來。

2.4執(zhí)行次序

將AND和OR結(jié)合使用進(jìn)行復(fù)雜的數(shù)據(jù)過濾,那么就會(huì)出現(xiàn)執(zhí)行次序的問題。

類比現(xiàn)實(shí):比如小學(xué)中學(xué)習(xí)有括號(hào)四則混合運(yùn)算,那么運(yùn)算就要滿足一定順序;比如公司中查詢?cè)滦匠^10w,并且職位是管理層或開發(fā)者的員工。

測(cè)試情景:查詢商品單價(jià)是3.49,商品編號(hào)是BNBG01或BNBG03的訂單。

分析思考:查詢商品單價(jià)必須滿足3.49,而商品編號(hào)只需要滿足BNBG01或BNBG03任一個(gè)即可。

測(cè)試SQL: 

  1. SELECT * F ROM OrderItems W HERE item_price B ETWEEN 3 AND 5 OR quantity >= 200 ORDER BY order_num DESC

測(cè)試結(jié)果:

結(jié)果分析:

  1. 數(shù)據(jù)沒有滿足我們的預(yù)期,為什么呢?單價(jià)必須等于3.49。
  2. 在SQL的世界中AND運(yùn)算符優(yōu)先于OR運(yùn)算符,好比乘法運(yùn)算優(yōu)先于加減法運(yùn)算先執(zhí)行。
  3. SELECT * F ROM OrderItems W HERE item_price=3.49 AND prod_id='BNBG01' OR prod_id='BNBG03';實(shí)際查詢的結(jié)果是單價(jià)等于3.49并且商品編號(hào)是'BNBG01'的訂單,或者商品編號(hào)是'BNBG03'的訂單,所以和我們預(yù)期是不一樣的!

如何解決AND和OR的順序問題呢?使用圓括號(hào)明確地分組進(jìn)行相應(yīng)的操作。

測(cè)試SQL: 

  1. SELECT * F ROM OrderItems W HERE item_price= 3.49 AND (prod_id = 'BNBG01' OR prod_id= 'BNBG03') ; 

測(cè)試結(jié)果:

結(jié)果分析:

  1. 從查詢結(jié)果中可以看到,(prod_id='BNBG01' OR prod_id='BNBG03')作為1個(gè)整體變成1個(gè)執(zhí)行單元;
  2. 圓括號(hào)的優(yōu)先級(jí)高于AND,AND優(yōu)先級(jí)高于OR;
  3. 如果查詢過濾條件過多,使用AND或者OR,那么就應(yīng)該使用圓括號(hào)明確地分組操作,不要以來默認(rèn)地計(jì)算次序!使用圓括號(hào)的好處在于可消除歧義,增強(qiáng)可讀性。 
責(zé)任編輯:龐桂玉 來源: 快資訊
相關(guān)推薦

2010-11-24 10:35:34

MySQL單表多字段

2010-11-22 13:13:30

MySQL模糊查詢

2010-06-09 10:09:39

MySQL 數(shù)據(jù)庫導(dǎo)入

2010-05-20 11:23:12

卸載MySQL

2010-06-02 16:57:50

MySQL數(shù)據(jù)庫同步

2023-11-30 07:15:57

MySQL數(shù)據(jù)庫

2011-07-28 17:02:59

MYSQL數(shù)據(jù)庫跨表更新數(shù)據(jù)并合

2023-11-13 15:03:49

MySQL數(shù)據(jù)庫

2010-10-14 10:18:28

MySQL數(shù)據(jù)庫備份

2010-06-07 13:53:04

MySQL數(shù)據(jù)庫表

2010-06-01 12:51:23

MySQL數(shù)據(jù)庫

2010-06-09 15:01:18

MySQL數(shù)據(jù)庫同步

2010-06-04 10:05:55

MySQL數(shù)據(jù)庫還原

2011-03-21 17:00:23

MySQL數(shù)據(jù)庫

2009-02-02 13:16:23

修復(fù)數(shù)據(jù)表MySQL

2011-05-18 13:16:21

MySQL數(shù)據(jù)庫鎖定

2011-05-24 09:32:38

2010-06-04 09:58:03

MySQL數(shù)據(jù)庫備份

2010-06-09 11:32:51

MySQL數(shù)據(jù)庫備份

2010-06-09 17:36:45

MySQL數(shù)據(jù)庫同步
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)