當前位置:成語大全網 - 新華字典 - sql多表聯查詢(sql多表聯合查詢)

sql多表聯查詢(sql多表聯合查詢)

可以用謂詞或聯結實現:

連接實現:

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