• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    MySQL的WHERE語句中BETWEEN與IN的使用教程

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 20:53:06
    文檔

    MySQL的WHERE語句中BETWEEN與IN的使用教程

    MySQL的WHERE語句中BETWEEN與IN的使用教程:MySQL BETWEEN 用法 MySQL BETWEEN 語法 BETWEEN 運(yùn)算符用于 WHERE 表達(dá)式中,選取介于兩個值之間的數(shù)據(jù)范圍。BETWEEN 同 AND 一起搭配使用,語法如下: WHERE column BETWEEN value1 AND value2 WHERE column NOT
    推薦度:
    導(dǎo)讀MySQL的WHERE語句中BETWEEN與IN的使用教程:MySQL BETWEEN 用法 MySQL BETWEEN 語法 BETWEEN 運(yùn)算符用于 WHERE 表達(dá)式中,選取介于兩個值之間的數(shù)據(jù)范圍。BETWEEN 同 AND 一起搭配使用,語法如下: WHERE column BETWEEN value1 AND value2 WHERE column NOT

    MySQL BETWEEN 用法
    MySQL BETWEEN 語法
    BETWEEN 運(yùn)算符用于 WHERE 表達(dá)式中,選取介于兩個值之間的數(shù)據(jù)范圍。BETWEEN 同 AND 一起搭配使用,語法如下:

    WHERE column BETWEEN value1 AND value2
    WHERE column NOT BETWEEN value1 AND value2
    

    通常 value1 應(yīng)該小于 value2。當(dāng) BETWEEN 前面加上 NOT 運(yùn)算符時,表示與 BETWEEN 相反的意思,即選取這個范圍之外的值。
    BETWEEN 實例
    選取 uid 在 2 到 5 之間的用戶數(shù)據(jù):

    SELECT * FROM user WHERE uid BETWEEN 2 AND 5
    

    返回查詢結(jié)果如下:

    20151216160201795.png (639×132)

    除了數(shù)值類型外,BETWEEN 也支持字符串范圍,如下選擇出所有 username 介于 a 至 j 之間的用戶(并包括單字母k/K):
    SELECT * FROM user WHERE username BETWEEN 'a' AND 'k'
    字符范圍也支持漢字,但通常來說沒什么意義。
    MySQL BETWEEN 邊界
    雖然幾乎所有的數(shù)據(jù)庫都支持 BETWEEN ... AND 運(yùn)算符,但不同的數(shù)據(jù)庫對 BETWEEN ... AND 處理方式是有差異的。在 MySQL 中,BETWEEN 包含了 value1 和 value2 邊界值,如上面選取 uid 在 2 到 5 之間的用戶數(shù)據(jù)例子。
    而有的數(shù)據(jù)庫則不包含 value1 和 value2 邊界值(類似于 > and <),也有數(shù)據(jù)庫包含 value1 而不包含 value2(類似于 >= and <)。所以在使用 BETWEEN ... AND 的時候,請檢查你的數(shù)據(jù)庫是如何處理 BETWEEN 邊界值的。
    MySQL BETWEEN 時間日期
    BETWEEN AND 常用于檢索時間或日期段內(nèi)的內(nèi)容,下面是一些常見的 BETWEEN 時間日期例子:

    // int 時間戳格式,查詢 2008-08-08 20:00:00 到 2009-01-01 零點(diǎn)之前的數(shù)據(jù)
    SELECT * FROM table WHERE column_time BETWEEN 1218196800 AND 1230739199
    
    // DATE 格式,查詢 2008-08-08 到 2009-01-01 零點(diǎn)之前的數(shù)據(jù)
    SELECT * FROM table WHERE column_time BETWEEN '2008-08-08' AND '2009-01-01'
    
    // DATETIME 格式,查詢 2008-08-08 20:00:00 到 2009-01-01 零點(diǎn)之前的數(shù)據(jù)
    SELECT * FROM table WHERE column_time BETWEEN '2008-08-08 20:00:00' AND '2008-12-31 23:59:59'
    但對于查詢到當(dāng)前時間的數(shù)據(jù),建議使用 >= 運(yùn)算符:
    // DATETIME 格式,查詢 2008-08-08 20:00:00 到當(dāng)前時刻的數(shù)據(jù)
    SELECT * FROM table WHERE column_time >= '2008-08-08 20:00:00'
    
    

    可見,同樣的需求,不同的字段類型,寫法可能就不一樣。從效率上來講,int 時間戳格式效率最優(yōu)。
    以上 BETWEEN 的各個例子,雖然都是 SELECT 查詢,但 BETWEEN 也可以用于 UPDATE、DELETE 等適用 WHERE 表達(dá)式的 SQL 中。
    MySQL BETWEEN 數(shù)據(jù)比較
    BETWEEN 還具有數(shù)據(jù)比較功能,語法如下:

    expr BETWEEN min AND max
    

    當(dāng) expr 表達(dá)式的值大于或等于 min 且小于或等于 max 時, BETWEEN 的返回值為 1 ,否則返回 0 。利用這個功能,可以判斷一個表達(dá)式或值否則在某個區(qū)間:

    // 返回 0
    SELECT 1 BETWEEN 2 AND 3
    // 返回 1
    SELECT 'b' BETWEEN 'a' AND 'c'
    // 判斷日期范圍
    SELECT 20080808 BETWEEN 20080101 AND 20090101
    

    BETWEEN 與 <、<=、>=、> 等運(yùn)算符在某些情況下有著類似的功能,但 BETWEEN 運(yùn)算級別更高且效率上更甚一籌。當(dāng)然由于 BETWEEN 存在邊界值的問題而不夠靈活,因此不同的情況,采用何種運(yùn)算符,需要具體對待。

    MySQL IN 用法
    MySQL IN 語法
    IN 運(yùn)算符用于 WHERE 表達(dá)式中,以列表項的形式支持多個選擇,語法如下:

    WHERE column IN (value1,value2,...)
    WHERE column NOT IN (value1,value2,...)
    

    當(dāng) IN 前面加上 NOT 運(yùn)算符時,表示與 IN 相反的意思,即不在這些列表項內(nèi)選擇。
    IN 使用實例
    選取 uid 為 2、3、5 的用戶數(shù)據(jù):

    SELECT * FROM user WHERE uid IN (2,3,5)
    

    返回查詢結(jié)果如下:

    20151216160410446.png (638×104)

    IN 子查詢
    更多情況下,IN 列表項的值是不明確的,而可能是通過一個子查詢得到的:
    SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
    在這個 SQL 例子里,我們實現(xiàn)了查出所有狀態(tài)為 0 的用戶(可能是被禁止)的所有文章。首先通過一個查詢得到所有所有 status=0 的用戶:

    SELECT uid FROM user WHERE status=0
    

    然后將查詢結(jié)果作為 IN 的列表項以實現(xiàn)最終的查詢結(jié)果,注意在子查詢中返回的結(jié)果必須是一個字段列表項。
    IN 運(yùn)算符補(bǔ)充說明
    IN 列表項不僅支持?jǐn)?shù)字,也支持字符甚至?xí)r間日期類型等,并且可以將這些不同類型的數(shù)據(jù)項混合排列而無須跟 column 的類型保持一致:

    SELECT * FROM user WHERE uid IN(1,2,'3','c')
    

    一個 IN 只能對一個字段進(jìn)行范圍比對,如果要指定更多字段,可以使用 AND 或 OR 邏輯運(yùn)算符:
    SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
    使用 AND 或 OR 邏輯運(yùn)算符后,IN 還可以和其他如 LIKE、>=、= 等運(yùn)算符一起使用。
    關(guān)于 IN 運(yùn)算符的效率問題
    如果 IN 的列表項是確定的,那么可以用多個 OR 來代替:

    SELECT * FROM user WHERE uid IN (2,3,5)
    // 等效為:
    SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
    

    一般認(rèn)為,如果是對索引字段進(jìn)行操作,使用 OR 效率高于 IN,但對于列表項不確定的時候(如需要子查詢得到結(jié)果),就必須使用 IN 運(yùn)算符。另外,對于子查詢表數(shù)據(jù)小于主查詢的時候,也是適用 IN 運(yùn)算符的。

    您可能感興趣的文章:

  • 使用mysqldump對MySQL的數(shù)據(jù)進(jìn)行備份的操作教程
  • MySQL中幾種數(shù)據(jù)統(tǒng)計查詢的基本使用教程
  • MySQL中join語句的基本使用教程及其字段對性能的影響
  • MySQL中Distinct和Group By語句的基本使用教程
  • Mysql使用簡單教程(三)
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL的WHERE語句中BETWEEN與IN的使用教程

    MySQL的WHERE語句中BETWEEN與IN的使用教程:MySQL BETWEEN 用法 MySQL BETWEEN 語法 BETWEEN 運(yùn)算符用于 WHERE 表達(dá)式中,選取介于兩個值之間的數(shù)據(jù)范圍。BETWEEN 同 AND 一起搭配使用,語法如下: WHERE column BETWEEN value1 AND value2 WHERE column NOT
    推薦度:
    標(biāo)簽: in 用法 教程
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品一区二区三区免费视频| 日韩AV毛片精品久久久| 精品日韩欧美国产| 91精品国产综合久久精品| 亚洲麻豆精品国偷自产在线91| 91精品啪在线观看国产电影| 国内精品伊人久久久久AV影院| 亚洲国产成人a精品不卡在线| 国产欧美精品专区一区二区| 久久久久四虎国产精品| 久久久免费精品re6| 中文国产成人精品久久不卡| 欧美精品福利在线视频| 国产亚洲精品看片在线观看| 91精品国产自产在线老师啪| 国产精品亚洲专区在线观看| 精品少妇无码AV无码专区| 无码人妻精品一区二区三区久久久 | 国内精品伊人久久久久网站| 久久99精品久久久久久| 99国产精品国产精品九九| 久久国产精品77777| 亚洲AV第一页国产精品| 亚洲中文字幕无码久久精品1| 亚洲国产精品丝袜在线观看| 久久久久无码精品国产app| 国产精品午夜福利在线无码| 国产精品一区在线观看你懂的| 97精品国产自在现线免费观看 | 国产69精品久久久久777| 国产日韩精品中文字无码| 久久99精品久久久久子伦| 久久精品无码一区二区无码 | 精品乱码久久久久久久| 岛国精品一区免费视频在线观看| 国产精品毛片VA一区二区三区| 国产乱人伦偷精品视频免下载| 国产精品无圣光一区二区| www.亚洲精品| 四虎永久在线精品国产免费| 国产A∨免费精品视频|