[英]Inner join two tables, both have foreign keys with no primary key?
TABLE_1(G_id(fk),A_id(fk),description)
TABLE_2(U_id(fk),G_id(fk),Permision)
G-id是表3和表2的主鍵。
TABLE_3(G_id(pk),name,des)
現在,我在不使用表3的情況下基於G_id在表1和表2上應用了內部聯接,但它未顯示任何記錄。 為什么?
SELECT *
FROM TABLE_1 INNER JOIN TABLE_2
ON TABLE_1.G_id=TABLE_2.G_id
沒有像join這樣的規則應該具有主鍵或外鍵。
沒有任何鍵的表,索引可以是聯接的一部分。 鑰匙是確保您的完整性。
但是,在某些情況下,定義鍵對於您的數據完整性和性能是有好處的,SQL Server優化器將足夠聰明,可以通過鍵理解您與表的關系,並且性能更好。
SELECT TABLE_1.* ,TABLE_2
FROM TABLE_1 INNER JOIN TABLE_2
ON TABLE_1.G_id=TABLE_2.G_id
您所描述的表的類型有時稱為聯接表 。 您將在要連接的各列上創建一個主鍵,這既出於唯一性,又因為它更有可能被索引以提高性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.