自然加入场景

Har*_*had 3 sql oracle

当我们使用NATURAL JOIN连接两个表时,在公共列名称的基础上执行连接操作.当我们在两个表中有两个具有相同名称的列时,只显示公共记录.

我有一个查询,当我们有相同名称但不同数据类型的列时,这些列也会连接.我的意思是假设table1中的column_1具有数据类型INTEGER而table2中的column_1具有数据类型VARCHAR,则基于这两列执行连接.

简而言之,当两个具有相同名称的列的数据类型存在差异时,自然连接如何发生?

Mat*_*lie 8

NATURAL JOIN 通常被认为是一种反模式.

它会导致许多可维护性问题.这只是其中之一.

而是使用显式连接,您可以键入转换字段.

  table1
INNER JOIN
  table2
    ON table2.fieldX = CAST(table1.fieldX AS INT)
Run Code Online (Sandbox Code Playgroud)

根据经验和个人偏好,明确比隐含更容易维护.而且没有性能问题.