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

Har*_*man 5 mysql join sqldatatypes

假设我们有两个表,表A(父级)和表B(子级)之间具有一对多关系,它们是通过表B中的parent_idVARCHAR(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
Run Code Online (Sandbox Code Playgroud)

在这里,一个供应商有多个付款。现在,此查询返回了5条记录,在其中我可以看到所有5条记录的payment_amount,但对于只有p.supplier_id一位数字长度的记录,我只能看到company_name。如果在数据库中我将​​p.supplier_id修改为任何有效的2位数ID,则无法获取供应商记录。

Kic*_*art 4

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

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

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

请注意,存储在字符串中的数字中的前导字符将导致其计算结果为 0。