close

WHERE IN 用法 :

  • WHERE 欄位 IN (val1,val2,...)
  • WHERE 欄位 NOT IN (val1,val2,...)

選取該張表裡面的指定欄位所有值,反之 NOT IN 則為相反,選取不在該值範圍的資料。

<表一> 會員表(Member)

Id Name acc email 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)

 

 

arrow
arrow

    小鐵牛程式成長 發表在 痞客邦 留言(0) 人氣()