MYSQL Left Join返回与第一个字符匹配的所有行

时间:2013-06-24 13:01:11

标签: mysql left-join

我在MYSQL环境中有一个简单的左连接。

SELECT *
FROM (`holiday`)
LEFT JOIN `member` ON `member`.`memberId` = `holiday`.`memberId`
ORDER BY `holiday`.`begin_date` ASC 

但是,不是仅返回完全匹配,而是返回member.memberId在第一个字符中具有holiday.memberId的任何记录。

结果:

holidayId holiday.memberId member.memberId
9         1                1
9         1A65152F         1
10        1                1
10        1A65152F         1

如何让它返回完全匹配?

1 个答案:

答案 0 :(得分:4)

字段holiday.memberId是STRING,而member.memberId是INTEGER,因此MySQL会自动将字符串转换为数字(例如“123ABC”将转换为123)。

你可以试试这个:

SELECT *
FROM (`holiday`)
LEFT JOIN `member` ON `member`.`memberId` = BINARY `holiday`.`memberId`
ORDER BY `holiday`.`begin_date` ASC

使用BINARY会强制进行二进制比较,禁用自动转换。

或者您应该将两个字段都转换为字符串。