sql從兩個表條件查詢數(shù)據(jù) sql多表聯(lián)查詢怎么用?
sql多表聯(lián)查詢怎么用?可以用謂詞或聯(lián)結(jié)實現(xiàn):連接實現(xiàn):select * from b join a on b.id=a.id where a.b=21聯(lián)結(jié)實現(xiàn)的條件是兩表id來自同一值域,表示意義相
sql多表聯(lián)查詢怎么用?
可以用謂詞或聯(lián)結(jié)實現(xiàn):
連接實現(xiàn):
select * from b join a on b.id=a.id where a.b=21
聯(lián)結(jié)實現(xiàn)的條件是兩表id來自同一值域,表示意義相同.在連接時其實兩可以作成一個表的:
也就是
id,a.b,a.c,b.b.b.c
但由于空值的問題,導(dǎo)致了部分依賴所以才會拆分成兩個表的.
使用謂詞實現(xiàn):
select * from b where id in (select id from a where a.b=21)
這個可以實現(xiàn)兩表id來自同一值域,但表示意義不同的情況.也就是說兩表中的id有無關(guān)性.
相比較而言,連接的方式更快一些,但這種情況是兩表來自同一值域,且意義相同,如果不是這種情況,可能得不到你正確的值的.而使用謂詞不管意義是否相同,都可以得到正確的值.
玩數(shù)據(jù)庫必須知道這兩個表是否具有相關(guān)性,也就是設(shè)計時的意義,否則優(yōu)化詞句什么的都沒有辦法去做的!
有幾種方式可以實現(xiàn)你的這個需求.
1. 使用表 關(guān)聯(lián)
SELECT * FROM 表2 JOIN 表1 ON ( 表2.ID = 表1.列1 )
2. 使用 IN
SELECT * FROM 表2 WHERE ID IN ( SELECT 列1 FROM 表1)
3.使用 EXISTS
SELECT * FROM 表2
WHERE EXISTS ( SELECT 1 FROM 表1 WHERE 表2.ID = 表1.列1 )
select * from t2 left join t1 on t2.ID = t1.列1 where t1需要啥條件 and t2需要啥條件
select * from 表2 where 某列 in (select 列1 from 表1) and id=1