Mysql數(shù)據(jù)庫實現(xiàn)多字段過濾的方法
我國移動互聯(lián)網(wǎng)進(jìn)入了飛速發(fā)展階段,互聯(lián)網(wǎng)人才日益受到企業(yè)的重視,其中PHP開發(fā)人才便是其中之一,在互聯(lián)網(wǎng)旅游、金融、餐飲、娛樂、社交等一些新興企業(yè)與軟件開發(fā)企業(yè)中,PHP開發(fā)崗位相對占有核心地位,今天給大家分享的技術(shù)知識是—— mysql數(shù)據(jù)庫如何實現(xiàn)多字段過濾。
1.多字段過濾查詢
類比現(xiàn)實:查詢公司中戶籍是北京的、年齡超過30歲、性別是男的同事信息;
查詢場景:查詢商品名稱是'King doll'、商品價格是9.49的商品。
查詢SQL:
SELECT prod_id, prod_name, prod_price F ROM Products W HERE prod_name = 'King doll' AND prod_price = 9.49;
查詢結(jié)果:
2.多字段過濾連接
WHERE字句中有多個字段進(jìn)行查詢過濾,過濾條件如何連接的呢?MySql允許給出多個WHERE字句進(jìn)行過濾,它們可以使用AND或者OR進(jìn)行連接!
AND連接類比現(xiàn)實:飛鷹小學(xué)5年2班身高超過1米3、不戴眼鏡的男同學(xué)去操場上跑步。根據(jù)上述描述可以得出結(jié)論必須同時滿足身高超過1米3、不戴眼鏡、男生這三個條件的同學(xué)才需要去操場跑步,任何一個條件不滿足都不用去操場跑步。
OR連接類比現(xiàn)實:飛鷹小學(xué)5年2班身高超過1米3或不戴眼鏡的同學(xué)去操場上跑步,根據(jù)上述描述可以得出結(jié)論只要滿足身高超過1米3,或不戴眼鏡這兩個條件中任意一個條件的學(xué)生就要去操場跑步,即身高超過1米3的同學(xué)要去跑步,不戴眼鏡的同學(xué)要去跑步。只要滿足任意一個條件就需要去操場可以!
2.1AND操作符
AND運算符作用?用來指示檢索滿足所有給定條件的行。如果需要同時滿足多個過濾條件,只需要在過濾條件之間添加AND即可。
測試案例:查詢商品單價在2-5之間,商品數(shù)量大于等于10的訂單數(shù)據(jù)。
測試SQL:
SELECT * FROM OrderItems W HERE item_price B ETWEEN 2 AND 5 AND quantity >= 10 ORDER BY order_num DESC;
測試結(jié)果:
結(jié)果說明:如果有多個過濾條件需要同時滿足,那么只需要在哪些過濾條件之間加上AND關(guān)鍵字即可,查詢條件理論上個數(shù)不限!
2.2OR操作符
OR操作符作用?用來指示檢索滿足任一給定條件的行。如果有多個過濾條件,那么需要過濾條件之間添加OR即可。
測試案例:查詢商品單價在3-5之間,或商品數(shù)量大于等于200的訂單數(shù)據(jù)。
測試SQL:
SELECT * F ROM OrderItems W HERE item_price B ETWEEN 3 AND 5 OR quantity >= 200 ORDER BY order_num DESC;
測試結(jié)果:
結(jié)果說明:只要滿足商品單價在[3,5]之間,或者商品數(shù)量大于等于200的訂單都滿足條件。
2.3AND和OR進(jìn)行對比
AND必須滿足全部條件,OR只需要滿足任一條件。
類比理解:現(xiàn)在有一群黑色和白色的公企鵝,如果取走黑色母企鵝,即SELECT * FROM 企鵝 WHERE 顏色=黑色 AND 性別=母是查詢不到企鵝的,因為兩個條件必須同時滿足,性別=母是沒有;如果要取走顏色是白色或性別是母的企鵝,即SELECT * FROM
企鵝 WHERE 顏色=白色 OR 性別=母,那么就可以將白色公企鵝查詢出來。
2.4執(zhí)行次序
將AND和OR結(jié)合使用進(jìn)行復(fù)雜的數(shù)據(jù)過濾,那么就會出現(xiàn)執(zhí)行次序的問題。
類比現(xiàn)實:比如小學(xué)中學(xué)習(xí)有括號四則混合運算,那么運算就要滿足一定順序;比如公司中查詢月薪超過10w,并且職位是管理層或開發(fā)者的員工。
測試情景:查詢商品單價是3.49,商品編號是BNBG01或BNBG03的訂單。
分析思考:查詢商品單價必須滿足3.49,而商品編號只需要滿足BNBG01或BNBG03任一個即可。
測試SQL:
SELECT * F ROM OrderItems W HERE item_price B ETWEEN 3 AND 5 OR quantity >= 200 ORDER BY order_num DESC;
測試結(jié)果:
結(jié)果分析:
數(shù)據(jù)沒有滿足我們的預(yù)期,為什么呢?單價必須等于3.49。
在SQL的世界中AND運算符優(yōu)先于OR運算符,好比乘法運算優(yōu)先于加減法運算先執(zhí)行。
SELECT * F ROM OrderItems W HERE item_price=3.49 AND prod_id='BNBG01' OR prod_id='BNBG03';
實際查詢的結(jié)果是單價等于3.49并且商品編號是'BNBG01'的訂單,或者商品編號是'BNBG03'的訂單,所以和我們預(yù)期是不一樣的!
如何解決AND和OR的順序問題呢?使用圓括號明確地分組進(jìn)行相應(yīng)的操作。
測試SQL:
SELECT * F ROM OrderItems W HERE item_price= 3.49 AND (prod_id = 'BNBG01' OR prod_id= 'BNBG03') ;
測試結(jié)果:
結(jié)果分析:
從查詢結(jié)果中可以看到,(prod_id='BNBG01' OR prod_id='BNBG03')
作為1個整體變成1個執(zhí)行單元;
圓括號的優(yōu)先級高于AND,AND優(yōu)先級高于OR;
如果查詢過濾條件過多,使用AND或者OR,那么就應(yīng)該使用圓括號明確地分組操作,不要以來默認(rèn)地計算次序!使用圓括號的好處在于可消除歧義,增強可讀性。
總結(jié)
以上所述是小編給大家介紹的Mysql數(shù)據(jù)庫實現(xiàn)多字段過濾的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
MySQL入門(一) 數(shù)據(jù)表數(shù)據(jù)庫的基本操作
這類文章記錄我看MySQL5.6從零開始學(xué)》這本書的過程,將自己覺得重要的東西記錄一下,并有可能幫助到你們,在寫的博文前幾篇度會非常基礎(chǔ),只要動手敲,跟著我寫的例子全部實現(xiàn)一遍,基本上就搞定了,前期很難理解的東西基本沒有2018-07-07Mysql查詢語句如何實現(xiàn)無限層次父子關(guān)系查詢
這篇文章主要介紹了Mysql查詢語句如何實現(xiàn)無限層次父子關(guān)系查詢問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07解決ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?
在Windows系統(tǒng)上使用Django連接Ubuntu虛擬機中的MySQL數(shù)據(jù)庫時,遇到無法連接的問題,排查后發(fā)現(xiàn)是由于MySQL綁定的IP地址改變導(dǎo)致的,下面就來介紹一下問題解決,感興趣的可以了解一下2024-09-09mysql error 1071: 創(chuàng)建唯一索引時字段長度限制的問題
這篇文章主要介紹了mysql error 1071: 創(chuàng)建唯一索引時字段長度限制的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09MySQL學(xué)習(xí)筆記之?dāng)?shù)據(jù)定義表約束,分頁方法總結(jié)
這篇文章主要介紹了MySQL學(xué)習(xí)筆記之?dāng)?shù)據(jù)定義表約束,分頁方法,結(jié)合實例形式總結(jié)分析了數(shù)據(jù)定義、主鍵、外鍵、自增長、約束等概念與用法,并給出了關(guān)于分頁的實例與相關(guān)操作技巧,需要的朋友可以參考下2016-09-09