2014-01-07 114 views
1

我想檢查列中的條目是否有效通過運行它並檢查其他表中的其他條目例如用戶輸入"AB"T1.C1,然後我想檢查是否"AB"T2.C2.是否存在任何想法?檢查是否存在其他表中的密鑰

+0

執行兩個表中的行必須以任何其他方式進行匹配(例如,用戶的ID)還是隻是「這個值是否存在於某個地方」? –

+2

被稱爲[「外鍵」](http://en.wikipedia.org/wiki/Foreign_key),您的DBMS可以自行處理它,只需*聲明*它。 –

回答

1

如果您只想查找一個值,做一個SELECTWHERE條款:

select * from T2 where T2.C2 = 'AB' 

要驗證整個表,你可以使用WHERE IN

select * from T2 
where T2.C2 in 
(
    select C1 from T1 where T1.C1 = T2.C2 
) 

的另一種等價的方式執行相同的查詢是WHERE EXISTS

select * from T2 
where exists 
(
    select * from T1 where T1.C1 = T2.C2 
) 

如果你想看到它的T1匹配T2S,做一個INNER JOIN

select * from T1 
inner join T2 on T2.C2 = T1.C1 

如果你的數據庫架構需要有一個匹配T1.C1 T2.C2,那麼你應該使用一個外鍵聲明這個要求。根據該表是父,哪個是孩子,外鍵看起來就像這樣:

alter table ChidlTable 
add constraint FK_Child_Parent foreign key (C1) 
references ParentTable (C2) 
0

您可以使用EXISTS檢查是否存在:

SELECT * FROM Table1 T1 
WHERE T1.C1 = 'AB' 
AND EXISTS 
(
    SELECT 1 FROM Table2 T2 WHERE T2.C2 = T1.C1 
) 
相關問題