假设我们有两个表,表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,我就无法获得供应商记录。
答案 0 :(得分:3)
MySQL可以使用不同的数据类型进行连接,但性能很差,因为它必须为每一行从一种类型转换为另一种类型。
我根据你上面的SQL设置了一个快速的SQL小提示来演示它的工作: -
http://www.sqlfiddle.com/#!2/f7d02a/1
请注意,存储在字符串中的数字中的前导字符将导致其被评估为0。