TABLE_1(G_id(fk),A_id(fk),description)
TABLE_2(U_id(fk),G_id(fk),Permision)
G-id是表3的主键,对表1和表2来说是陌生的。
TABLE_3(G_id(pk),name,des)
现在我在G_id的基础上在表1和表2上应用内连接,而不使用表3但是它没有显示找到的记录。为什么呢?
SELECT *
FROM TABLE_1 INNER JOIN TABLE_2
ON TABLE_1.G_id=TABLE_2.G_id
答案 0 :(得分:0)
没有像join这样的规则应该有主键或外键。
没有任何键的表,索引可以是join的一部分。关键是确保您的诚信。
但是定义键有利于您的数据完整性和性能,因为在某些情况下,SQL Server优化器将足够聪明,可以通过键理解表的关系并且性能更好。
SELECT TABLE_1.* ,TABLE_2
FROM TABLE_1 INNER JOIN TABLE_2
ON TABLE_1.G_id=TABLE_2.G_id
您所描述的表格类型有时称为join table。您可以在您加入的列中创建主键,既可以获得唯一性,也可以为更好的性能编制索引。