【问题标题】:Natural Join Tables自然连接表
【发布时间】:2016-07-10 05:32:51
【问题描述】:

导师表:

教表:

当您使用此查询对上述两个表进行自然连接时:

Select name, course_id
from instructor natural join teaches;

输出如下所示:

在上面的例子中,讲师是左桌并教右桌吗?为什么结果关系中的第一行以 Srinivasan 作为名称。它不应该有爱因斯坦,因为那是左表(讲师)中的第一行,而您正在将其与右表(教师)连接起来吗?因此,它将查看讲师的 222222 ID 并查看它是否与教师的 ID 匹配,然后它将查看 12121 (Wu) 是否与教师的 ID 匹配,依此类推。我对这个输出表是如何形成的感到困惑?

【问题讨论】:

    标签: mysql sql-server join


    【解决方案1】:

    自然连接会自动从每个表中选择列以用于确定匹配行。 SQL 标识每个表中具有相同名称和类型的列;之后,这些列的值相等的行将作为匹配行返回。

    所以,只有在公共列被选择和排序之后,在这种情况下 - id,才会发生匹配。

    因此名字是 Srinivasan,而不是 Einstein。

    【讨论】:

    • 哦,所以它会先从讲师表(左)中对公共列 ID 进行排序,然后与教员表进行自然连接(右)?但是id列的teachs表上没有排序?还是教表上的 ID 列也进行了排序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2018-11-30
    • 2011-01-21
    • 2012-01-31
    • 1970-01-01
    • 2013-04-13
    相关资源
    最近更新 更多