close
WHERE IN 用法 :
- WHERE 欄位 IN (val1,val2,...)
- WHERE 欄位 NOT IN (val1,val2,...)
選取該張表裡面的指定欄位所有值,反之 NOT IN 則為相反,選取不在該值範圍的資料。
<表一> 會員表(Member)
Id | Name | acc | Status | |
1 | John | john123 | john123@xxx.xx | 1 |
2 | Tom | tom321 | tom321@xxx.xx | 1 |
3 | Amy | amy789 | amy789@xxx.xx | 0 |
4 | Alex | alex987 | alex987@xxx.xx | 1 |
範例1:
表一 Member 儲存一些會員的資料,要找到欄位 Status 是 1 的所有資料,可以這樣做
SELECT * FROM Member WHERE Id IN (1, 2, 4)
這樣就可以找到所有 Status = 1 的資料了。
這樣寫或許看不到 IN 的便利性,看範例2就會比較明瞭
範例2:
<表二> 文章表(Article)
Id | Uid | Title | CreateTime | Status |
1 | 1 | Ex1 | 2017-01-01 | 1 |
2 | 1 | Ex2 | 2017-01-10 | 1 |
3 | 3 | Ex3 | 2017-01-20 | 1 |
4 | 4 | Ex4 | 2017-01-30 | 1 |
5 | 2 | Ex5 | 2017-02-01 | 1 |
現在有第二張表 Article 的 Uid 對應 Member 的 Id,我們要找到所有會員 Status = 1 的文章
這時候 Sql 可以這樣寫
SELECT * FROM Article WHERE Uid IN (SELECT Id FROM Member WHERE Status = 1)
這樣 Article 前四筆資料都會被取出來,反之 NOT IN 的話就只會取出第5筆資料
SELECT * FROM Article WHERE Uid NOT IN (SELECT Id FROM Member WHERE Status = 1)
文章標籤
全站熱搜