检查其他表中是否存在密钥

时间:2014-01-07 14:24:36

标签: sql key exists

我想通过运行它来检查列中的条目是否有效并检查其他表中的其他条目,例如用户在列"AB"中输入T1.C1,然后我想要检查如果"AB"列中存在T2.C2.任何想法?

2 个答案:

答案 0 :(得分:2)

如果您只想查找某个值,请使用SELECT子句执行WHERE

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与T2匹配,请执行INNER JOIN

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

如果您的数据库架构要求T2.C2与T1.C1匹配,那么您应该使用外键来断言此要求。根据哪个表是父表,哪个表是子表,外键将如下所示:

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

答案 1 :(得分:0)

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

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