
tb1 的id表为bigint,tb2表pid字段类型为varchar。
2、段关进行左连接查询 复制SELECT a.id,联后b.pid FROM tb1 a LEFT JOIN tb2 b ON a.id=b.`pid` WHERE a.id =14590661348829471961.2.3.4.查询结果如下:

结果为非预期,因为2个表的差异关联字段的内容并不相同。
3、据库据类结果居使用内连接 复制SELECT a.id,同数b.pid FROM tb1 a JOIN tb2 b ON a.id=b.`pid` WHERE a.id =14590661348829471961.2.3.4.使用内连接后,结果也不正确。型字

查询结果如下:

关联后确实是非预期的结果。
5、差异不加where条件的据库据类结果居内连接 复制SELECT a.id,b.pid FROM tb1 a JOIN tb2 b ON a.id=b.`pid`1.2.3.查询结果为:

此时不加where条件的企商汇内连接的结果却是正确的、
解决此问题的型字方法主要是解决两个关联字段的类型不同的问题,可以有2种方式
1、显式类型转换在关联的时候显式地进行字段类型转换,例如:
复制SELECT a.id,b.pid FROM tb1 a LEFT JOIN tb2 b ON CAST(a.`id` AS CHAR)=b.`pid` WHERE a.id=14590661348829471961.2.3.结果如下:

此时结果正确。
内连接结果也正确。 复制SELECT a.id,b.pid FROM tb1 a JOIN tb2 b ON CAST(a.`id` AS CHAR)=b.`pid` WHERE a.id =14590661348829471961.2.3.4. 2、改变字段类型(推荐)如果两张表的数据量较大,使用显式的亿华云计算字段类型转换(包括当前隐式字段类型转换)都将导致关联时不能使用索引,影响性能。因此建议在表设计时就将存在关联关系的字段类型设置为类型相同(字符类型时字符集及排序规则也一致)例如:
复制ALTER TABLE tb2 MODIFY pid BIGINT;1.修改后再查询看一下结果:
复制SELECT a.id,b.pid FROM tb1 a LEFT JOIN tb2 b ON a.`id`=b.`pid` WHERE a.id =14590661348829471961.2.3.4.结果正确:

此情况的出现是因为两表的关联字段类型不同时进行字段类型转换导致。bigint与varchar转换过程中字段精度出现问题,实际超过int最大值的数据(2147483647,即2^31 - 1)的数据被截断为2^31 - 1处理,因为两表进行左关联时,存在异常。
从上面的过程中,也发现左连接过程与内连接的过程中的中间数据结果(1.4及1.5中)也不同。服务器租用