我可以将一个Integer类型的表的列与另一个BigInteger类型的表的列联接吗?如果是这样,我是否需要投射或添加任何特殊内容?
答案 0 :(得分:1)
通常,SQL引擎将在bigint
和int
之间进行静默转换。我很确定大多数人会将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
在此查询的最后一行,将验证此条件以确定是否包含候选元组。在大多数类型中,您将受益于隐式强制转换,但您需要自己关心特殊情况。