Har*_*man 5 mysql join sqldatatypes
假设我们有两个表,表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
Run Code Online (Sandbox Code Playgroud)
在这里,一个供应商有多个付款。现在,此查询返回了5条记录,在其中我可以看到所有5条记录的payment_amount,但对于只有p.supplier_id一位数字长度的记录,我只能看到company_name。如果在数据库中我将p.supplier_id修改为任何有效的2位数ID,则无法获取供应商记录。
MySQL 可以连接不同的数据类型,但性能很差,因为它必须为每一行从一种类型转换为另一种类型。
我根据上面的 SQL 设置了一个快速 SQL 小提琴来演示它的工作原理:-
http://www.sqlfiddle.com/#!2/f7d02a/1
请注意,存储在字符串中的数字中的前导字符将导致其计算结果为 0。
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |