连接不同类型的列

时间:2019-05-06 22:45:24

标签: sql

我可以将一个Integer类型的表的列与另一个BigInteger类型的表的列联接吗?如果是这样,我是否需要投射或添加任何特殊内容?

2 个答案:

答案 0 :(得分:1)

通常,SQL引擎将在bigintint之间进行静默转换。我很确定大多数人会将int转换为bigint。您的特定数据库可能会选择将两者都转换为int,从而可能会出现溢出错误。

通常,类型转换会阻止使用索引。如果需要索引,这可能会严重影响性能。

否则,没有逻辑问题。除了。大多数join使用外键。外键应正确声明-并且它们必须具有相同的类型。因此,您可能希望研究数据模型,因为在适当的数据模型中,这几乎永远不会是需要回答的问题。

答案 1 :(得分:0)

  

我可以将一个Integer类型的表的列与另一个BigInteger类型的表的列联接吗?如果是这样,我是否需要投射或添加任何特殊内容?

是的,因为您使用的是JOIN还是笛卡尔乘积(SELECT … FROM table1,table2),所以实际需要的条件是可以评估为 true 的条件。例如:

 SELECT table1.*,
        table2.*

   FROM table1
   JOIN table2
     ON table1.id = table2.id

在此查询的最后一行,将验证此条件以确定是否包含候选元组。在大多数类型中,您将受益于隐式强制转换,但您需要自己关心特殊情况。