举例:
select * from table1 t1 left jion table2 t2 on t1.id = t2.table1_id
有两张表 table1 和 table2,需要进行联表查询,并通过table1的id,在table2中的table1_id来查。
而table1中的id是int类型,table2中的table1_id是varchar类型。因此在联表查询时会造成数据类型不一致查询较慢,甚至超时。
解决方案,首先将表table1中的id字段的int类型转为char类型。使用cast()函数
语法:CAST ( expression AS data_type )二进制,同带binary前缀的效果 : BINARY
- 字符型 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
select * from table1 t1 left jion table2 t2 on cast(t1.id as char) = t2.table1_id