2
A
回答
5
不要左连接到父表上有问题的关键,然后在子表其中左加入父表中的值是零检查值。
例如,如果这是你的架构......
table1:
myKey int primary key,
...other columns...
table2:
otherKey int primary key,
myKeyFromTable1 int
...other columns...
你可以这样做:
select distinct
t2.myKeyFromTable1
from table2 t2
left join table1 t1 on t1.myKey = t2.myKeyFromTable1
where t1.myKey is null
这将使你的唯一值table2
,不会有相应的父母在table1
。
4
SELECT
ForeignKey
FROM
FK_TABLE f
LEFT JOIN
PK_TABLE p ON f.ForeignKey = p.PrimaryKey
WHERE
p.PrimaryKey = NULL
这应该做到这一点。
ForeignKey的=你想成为一个外键
PK_TABLE列=你想要的表的外键引用
的PrimaryKey =列ForeignKey的将是一个外键。
2
SELECT *
FROM FK_Table
WHERE ForeignKey NOT IN (SELECT PrimaryKey FROM PK_Table);
这适用于为单列键编写的。它也可以用于多列键,如果您的DBMS允许表示法:
SELECT *
FROM FK_Table
WHERE (FK_Col1, FK_Col2) NOT IN (SELECT PK_Col1, PK_Col2 FROM PK_Table);
不过,并不是每个DBMS都支持这一点。这一提法与NOT EXISTS应该工作最多的地方:
SELECT *
FROM FK_Table
WHERE NOT EXISTS (SELECT 1
FROM PK_Table
WHERE FK_Col1 = PK_Col1 AND FK_Col2 = PK_Col2
);
0
所以,你必须与列X TableA的,并与列Y.表B你想使Y上外键,以便TableB.Y的所有值TableA.X中的值是否正确?
要做到这一点,TableA.X需要有任何主键或在其上的唯一约束。听起来似乎并非如此。让TableA.X独特的,然后再定义从TableB.Y您的FK引用TableA.X
相关问题
- 1. 引用主键的现有值sqlite3外键不匹配
- 2. 表***中的列与现有主键或UNIQUE约束不匹配
- 3. (匹配的主键)
- 4. MySql外键主键不匹配
- 5. 没有主外键匹配的表
- 6. SQL查询查找具有最匹配关键字的行
- 7. 查找外键匹配多行值
- 8. 查找匹配
- 9. SQlite主键:数据类型不匹配
- 10. 如何查找与关键字不匹配的结果?
- 11. SQL查询来查找不匹配二次匹配属性
- 12. 查找出现匹配模式的所有子串
- 13. Ruby模式匹配 - 查找所有可能的匹配数
- 14. 不包含与引用匹配的主键或候选键
- 15. 查找不匹配的数据
- 16. 查找不匹配的SQL语句
- 17. vLookup匹配不同的查找数组
- 18. SQL:查找紧密匹配但不完全匹配的行
- 19. 查找匹配或不匹配的两个表
- 20. 查找后没有使用主键
- 21. 复杂的SQL查询 - 查找与多个不同外键匹配的项目
- 22. 查找所有表匹配列
- 23. 查找有匹配元素ID
- 24. 没有匹配函数调用“查找”
- 25. Django内联外键与父主键不匹配
- 26. Django - 检查两个模型,如果他们的主键匹配
- 27. excel:查找关键字的范围,查找多个匹配项,返回最后一个匹配项
- 28. 查找不匹配grep,结果
- 29. 查找:变量值不匹配
- 30. 现有数据的主键
我认为创建FK的语句传递“有没有在PK台上的PK或唯一约束”测试。问题是,通过验证FK表中的每一行与PK表中的某个值匹配的部分方式是发现FK列中的值与PK表中的任何行都不匹配 - 因此无法创建密钥。 – 2009-07-25 00:00:24