问题
在执行任何类型的 Join时,所有常见属性都以一种或另一种方式列在一个列下。但是,我一直无法找到处理同名但具有不同域的列的来源。
从视觉的角度来看,我正在考虑以下案例的列:
域不同,因为一个 B 列是数字,而另一个是字母。
问题
是否可以使用同名但不同域的属性进行联接?
在执行任何类型的 Join时,所有常见属性都以一种或另一种方式列在一个列下。但是,我一直无法找到处理同名但具有不同域的列的来源。
从视觉的角度来看,我正在考虑以下案例的列:
域不同,因为一个 B 列是数字,而另一个是字母。
是否可以使用同名但不同域的属性进行联接?
我认为你被你的术语误导了。
SQL 是具有以下示意图的标准
*Oracle 在实例中没有单独的数据库。模式与用户相关联。
SQL 是第 4 代语言,它将知道在哪里查询对象的需求与高级的、几乎是人类语言风格的编程分开
当您在 SQL 中编写查询时,编译器(称为 SQL 优化器)会将其翻译成机器级语言并检索您的数据。因此,它高度依赖优化器来正确检索它认为最好的数据。
这意味着您的 SQL 只不过是对优化器有意义的建议。您只需要知道结构的名称是什么,而不是在哪里或如何获取它。
SQL 具有帮助优化器选择正确数据集的提示和运算符,但优化器选择首先解析的查询的ORDER。
因此,您正在编写逻辑查询。如果连接了两个表,您有责任通过专门调用可以连接的列来帮助优化器。
即使属性不同,优化器也足够灵活,知道如何动态转换这些值。例如,'13' 的 VARCHAR 类型值仍然与 tinyint、integer、numeric 值相当相似,因此优化器会将这些列隐式转换为相同的数据类型!
以下示例在 TSQL 中:
请注意,我们使用别名来帮助优化器了解连接的含义以及要返回的列的含义。