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