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)
回傳查詢結果如下:
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)!