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