我在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
如何让它返回完全匹配?
答案 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会强制进行二进制比较,禁用自动转换。
或者您应该将两个字段都转换为字符串。