1

我在 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

我如何让它只返回完全匹配?

4

1 回答 1

4

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

你可以试试这个:

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

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

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

于 2013-06-24T13:03:42.167 回答