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')
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')