簡體   English   中英

內部聯接兩個表,都具有沒有主鍵的外鍵?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM