嗨,大家好我一直在寻找和尝试没有运气的解决方案关于我的两个表在ms sql 2008 r2我的表格如下:
table 1
pk personid varchar - i manually insert here from GUID
fname varchar
mname varchar
lname varchar
qualifier varchar
table 2
pk id - increment by 1
fk personid varchar
salary int
deductions int
salary_month int
salary_year int
现在我的目标是知道哪个条目在另一个表上有外键,如果不是我想删除它
我真的需要一些帮助,我已经尝试了几个星期
答案 0 :(得分:0)
也许,你想要这个吗?
SELECT *
FROM table1 t1
WHERE NOT EXISTS (SELECT * FROM table2 t2 WHERE t2.personid=t1.personid)
答案 1 :(得分:-1)
这是一个查询,它将为您提供数据库中存在的所有外键的列表。
select FK.name as [Foreign_Key_Name], T.name as [Referenced_Table], T2.name as [Parent_Table]
from sys.foreign_key_columns FKC
inner join sys.tables T on FKC.referenced_object_id = T.object_id
inner join sys.tables T2 on FKC.parent_object_id = T2.object_id
inner join sys.foreign_keys FK on FKC.constraint_object_id = FK.object_id
如果您有一些像外键一样使用的列,但数据库中没有实际的FK对象,那么您可以尝试这样的事情
select *
from table1 T1
inner join table2 T2 on T1.ColumnX = T2.ColumnY
如果查询返回的行数很多,那么这两列可能属于FK关系。