mysql连接是否可以在不同的数据类型上发生
作者:互联网
假设我们有两个表,表A(父)和表B(子),它们之间有一对多的关系,通过表B中的parent_id(VARCHAR(100))字段建立.
parent_id字段的数据类型与表A中的id(INT(11))字段不同.所以问题是可以通过MYSQL JOIN查询返回正确的记录吗?
我遇到过这种情况.我正在运行以下查询:
SELECT p.payment_amount, s.company_name
FROM payments p
LEFT JOIN suppliers s ON p.supplier_id = s.id
LIMIT 5
这里有一家供应商有多笔付款.现在这个查询返回了5条记录,其中我可以看到所有5条记录的payment_amount,但我只能看到company_name,只有那些p.supplier_id为一位数长度的记录.如果在数据库中我将p.supplier_id修改为任何有效的2位数id,我就无法获得供应商记录.
解决方法:
MySQL可以使用不同的数据类型进行连接,但性能很差,因为它必须为每一行从一种类型转换为另一种类型.
我根据你上面的SQL设置了一个快速的SQL小提琴来演示它的工作原理: –
http://www.sqlfiddle.com/#!2/f7d02a/1
请注意,存储在字符串中的数字中的前导字符将导致其被计算为0.
标签:mysql,join,sqldatatypes 来源: https://codeday.me/bug/20190629/1321313.html