mysql连接是否可以在不同的数据类型上发生

时间:2014-06-24 10:03:13

标签: mysql join sqldatatypes

假设我们有两个表,表A (父)和表B (子),它们之间有一对多关系,通过parent_id建立(B中的 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,我就无法获得供应商记录。

1 个答案:

答案 0 :(得分:3)

MySQL可以使用不同的数据类型进行连接,但性能很差,因为它必须为每一行从一种类型转换为另一种类型。

我根据你上面的SQL设置了一个快速的SQL小提示来演示它的工作: -

http://www.sqlfiddle.com/#!2/f7d02a/1

请注意,存储在字符串中的数字中的前导字符将导致其被评估为0。