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. mysql查找与匹配值不匹配的匹配键
- 3. 表***中的列与现有主键或UNIQUE约束不匹配
- 4. (匹配的主键)
- 5. MySql外键主键不匹配
- 6. “查找不匹配”查询 -
- 7. 没有主外键匹配的表
- 8. 查找匹配值的数组键值
- 9. SQL查询查找具有最匹配关键字的行
- 10. 查找外键匹配多行值
- 11. 查找匹配
- 12. SQlite主键:数据类型不匹配
- 13. 如何查找与关键字不匹配的结果?
- 14. 查找无主键
- 15. SQL查询来查找不匹配二次匹配属性
- 16. 使用Levensthein方法查找现有数据的调整匹配
- 17. 查找出现匹配模式的所有子串
- 18. 我的SQL查询找到与匹配的主键最大值<=日期
- 19. Ruby模式匹配 - 查找所有可能的匹配数
- 20. Python。如何查找匹配子串的所有匹配项?
- 21. 查找文本中出现不匹配的最常见k-mers
- 22. 不包含与引用匹配的主键或候选键
- 23. 查找关系的主键
- 24. vLookup匹配不同的查找数组
- 25. 查找不匹配的SQL语句
- 26. 查找不匹配的数据
- 27. 在 'table_XXX' 的列不匹配现有primiary键或唯一约束
- 28. SQL:查找紧密匹配但不完全匹配的行
- 29. 查找与pattern1匹配的字符串,但不匹配pattern2
- 30. 查找匹配或不匹配的两个表
我认为创建FK的语句传递“有没有在PK台上的PK或唯一约束”测试。问题是,通过验证FK表中的每一行与PK表中的某个值匹配的部分方式是发现FK列中的值与PK表中的任何行都不匹配 - 因此无法创建密钥。 – 2009-07-25 00:00:24