可以用謂詞或聯結實現:
連接實現:
select*frombjoinaonb.id=a.idwherea.b=21
聯結實現的條件是兩表id來自同壹值域,表示意義相同.在連接時其實兩可以作成壹個表的:
也就是
id,a.b,a.c,b.b.b.c
但由於空值的問題,導致了部分依賴所以才會拆分成兩個表的.
使用謂詞實現:
select*frombwhereidin(selectidfromawherea.b=21)
這個可以實現兩表id來自同壹值域,但表示意義不同的情況.也就是說兩表中的id有無關性.
相比較而言,連接的方式更快壹些,但這種情況是兩表來自同壹值域,且意義相同,如果不是這種情況,可能得不到妳正確的值的.而使用謂詞不管意義是否相同,都可以得到正確的值.
玩數據庫必須知道這兩個表是否具有相關性,也就是設計時的意義,否則優化詞句什麽的都沒有辦法去做的!
有幾種方式可以實現妳的這個需求.
1.使用表關聯
SELECT*FROM表2JOIN表1ON(表2.ID=表1.列1);
2.使用IN
SELECT*FROM表2WHEREIDIN(SELECT列1FROM表1);
3.使用EXISTS
SELECT*FROM表2
WHEREEXISTS(SELECT1FROM表1WHERE表2.ID=表1.列1);
select*fromt2leftjoint1ont2.ID=t1.列1wheret1需要啥條件andt2需要啥條件
select*from表2where某列in(select列1from表1)andid=1