内连接两个表,都有没有主键的外键?

时间:2014-01-08 06:08:16

标签: mysql sql

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

1 个答案:

答案 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。您可以在您加入的列中创建主键,既可以获得唯一性,也可以为更好的性能编制索引。