以前學會select語法後,一直都用很簡單的查詢方式在寫資料庫
ex...Select * from 表 where A欄位=某個值
把所有A欄位等於某個值全抓出來

一直以來都沒有機會用到更進階一點的語法
ex..Select 欄位 from 表 where A欄位 in (值A,值B)
把A欄位等於值A或是值B的那一列資料抓出來

 直到最近奉命要刪除某資料庫時,才用到這個比較進階的語法
這個資料庫是這樣設計的
Table user(使用者)
 userID  name
a001  five
 ...  ...

Table Blog(部落格)
 blogID  userID
 b001  a001
 b002  a001
 ...  ...

Table Article(文章)
 id   blogID  entryName
 e001  b001  五五五
 e002  b002  四四四
 ...  ...  ...


這三個資料表紀錄了哪些使用者開了幾個BLOG又寫了哪些文章
上頭的要求很簡單,留下five使用者所寫的文章,其他全部刪除

原本我還笨笨想說,先把所有非five的id找出來,對應他開的那些部落格id
再一筆一筆進去Article資料表對應blogID來刪除資料
但是這可是有幾百筆耶XD

但是後來想到有這個where...in的語法
於是用了一行SQL指令解決這個問題:

Delete from Article
where blogID in (
select Blog.blogID
from user,Blog
where Blog.userID=user.userID and name<>'five'
)
這樣一行語法簡單解決我眼睛要盯半天的事情

arrow
arrow
    全站熱搜

    45 發表在 痞客邦 留言(0) 人氣()