程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL的WHERE語句中BETWEEN與IN的應用教程

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

編輯:MySQL綜合教程

MySQL的WHERE語句中BETWEEN與IN的應用教程。本站提示廣大學習愛好者:(MySQL的WHERE語句中BETWEEN與IN的應用教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL的WHERE語句中BETWEEN與IN的應用教程正文


MySQL BETWEEN 用法
MySQL BETWEEN 語法
BETWEEN 運算符用於 WHERE 表達式中,拔取介於兩個值之間的數據規模。BETWEEN 同 AND 一路搭配應用,語法以下:

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

平日 value1 應當小於 value2。當 BETWEEN 後面加上 NOT 運算符時,表現與 BETWEEN 相反的意思,即拔取這個規模以外的值。
BETWEEN 實例
拔取 uid 在 2 到 5 之間的用戶數據:

SELECT * FROM user WHERE uid BETWEEN 2 AND 5

前往查詢成果以下:

20151216160201795.png (639×132)

除數值類型外,BETWEEN 也支撐字符串規模,以下選擇出一切 username 介於 a 至 j 之間的用戶(並包含單字母k/K):
SELECT * FROM user WHERE username BETWEEN 'a' AND 'k'
字符規模也支撐漢字,但平日來講沒甚麼意義。
MySQL BETWEEN 界限
固然簡直一切的數據庫都支撐 BETWEEN ... AND 運算符,但分歧的數據庫對 BETWEEN ... AND 處置方法是有差別的。在 MySQL 中,BETWEEN 包括了 value1 和 value2 界限值,如下面拔取 uid 在 2 到 5 之間的用戶數據例子。
而有的數據庫則不包括 value1 和 value2 界限值(相似於 > and <),也稀有據庫包括 value1 而不包括 value2(相似於 >= and <)。所以在應用 BETWEEN ... AND 的時刻,請檢討你的數據庫是若何處置 BETWEEN 界限值的。
MySQL BETWEEN 時光日期
BETWEEN AND 經常使用於檢索時光或日期段內的內容,上面是一些罕見的 BETWEEN 時光日期例子:

// int 時光戳格局,查詢 2008-08-08 20:00:00 到 2009-01-01 零點之前的數據
SELECT * FROM table WHERE column_time BETWEEN 1218196800 AND 1230739199

// DATE 格局,查詢 2008-08-08 到 2009-01-01 零點之前的數據
SELECT * FROM table WHERE column_time BETWEEN '2008-08-08' AND '2009-01-01'

// DATETIME 格局,查詢 2008-08-08 20:00:00 到 2009-01-01 零點之前的數據
SELECT * FROM table WHERE column_time BETWEEN '2008-08-08 20:00:00' AND '2008-12-31 23:59:59'
但關於查詢到以後時光的數據,建議應用 >= 運算符:
// DATETIME 格局,查詢 2008-08-08 20:00:00 到以後時辰的數據
SELECT * FROM table WHERE column_time >= '2008-08-08 20:00:00'

可見,異樣的需求,分歧的字段類型,寫法能夠就紛歧樣。從效力下去講,int 時光戳格局效力最優。
以上 BETWEEN 的各個例子,固然都是 SELECT 查詢,但 BETWEEN 也能夠用於 UPDATE、DELETE 等實用 WHERE 表達式的 SQL 中。
MySQL BETWEEN 數據比擬
BETWEEN 還具稀有據比擬功效,語法以下:

expr BETWEEN min AND max

當 expr 表達式的值年夜於或等於 min 且小於或等於 max 時, BETWEEN 的前往值為 1 ,不然前往 0 。應用這個功效,可以斷定一個表達式或值不然在某個區間:

// 前往 0
SELECT 1 BETWEEN 2 AND 3
// 前往 1
SELECT 'b' BETWEEN 'a' AND 'c'
// 斷定日期規模
SELECT 20080808 BETWEEN 20080101 AND 20090101

BETWEEN 與 <、<=、>=、> 等運算符在某些情形下有著相似的功效,但 BETWEEN 運算級別更高且效力上愈甚一籌。固然因為 BETWEEN 存在界限值的成績而不敷靈巧,是以分歧的情形,采取何種運算符,須要詳細看待。

MySQL IN 用法
MySQL IN 語法
IN 運算符用於 WHERE 表達式中,以列表項的情勢支撐多個選擇,語法以下:

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

當 IN 後面加上 NOT 運算符時,表現與 IN 相反的意思,即不在這些列表項內選擇。
IN 應用實例
拔取 uid 為 2、3、5 的用戶數據:

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

前往查詢成果以下:

https://www.aspphp.online/shujuku/UploadFiles_3118/201707/2017072814223928.png (638×104)

IN 子查詢
更多情形下,IN 列表項的值是不明白的,而能夠是經由過程一個子查詢獲得的:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
在這個 SQL 例子裡,我們完成了查出一切狀況為 0 的用戶(能夠是被制止)的一切文章。起首經由過程一個查詢獲得一切一切 status=0 的用戶:

SELECT uid FROM user WHERE status=0

然後將查詢成果作為 IN 的列表項以完成終究的查詢成果,留意在子查詢中前往的成果必需是一個字段列表項。
IN 運算符彌補解釋
IN 列表項不只支撐數字,也支撐字符乃至時光日期類型等,而且可以將這些分歧類型的數據項混雜分列而不必跟 column 的類型堅持分歧:

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

一個 IN 只能對一個字段停止規模比對,假如要指定更多字段,可使用 AND 或 OR 邏輯運算符:
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
應用 AND 或 OR 邏輯運算符後,IN 還可以和其他如 LIKE、>=、= 等運算符一路應用。
關於 IN 運算符的效力成績
假如 IN 的列表項是肯定的,那末可以用多個 OR 來取代:

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

普通以為,假如是對索引字段停止操作,應用 OR 效力高於 IN,但關於列表項不肯定的時刻(如須要子查詢獲得成果),就必需應用 IN 運算符。別的,關於子查詢表數據小於主查詢的時刻,也是實用 IN 運算符的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved