MySQL IN 用法

黄舟
發布: 2016-12-27 17:25:38
原創
1888 人瀏覽過

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)
登入後複製

回傳查詢結果如下:

MySQL 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 的類型保持一致:

一個IN只能對一個字段進行範圍比對,如果要指定更多字段,可以使用AND 或OR 邏輯運算符:

SELECT * FROM user WHERE uid IN(1,2,'3','c')
登入後複製

使用AND 或OR 邏輯運算符後,IN 還可以和其他如LIKE、>=、=等運算符一起使用。

關於IN 運算符的效率問題

如果IN 的列表項是確定的,那麼可以用多個OR 來代替:

SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
登入後複製
一般認為,如果是對索引字段進行操作,使用OR 效率高於IN,但對於清單項目不確定的時候(如需要子查詢得到結果),就必須使用IN 運算子。另外,對於子查詢表資料小於主查詢的時候,也是適用 IN 運算子的。

 以上就是MySQL IN 用法的內容,更多相關內容請關注PHP中文網(www.php.cn)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板