Я столкнулся с ситуацией, когда был сгенерирован неправильный запрос:
select a.id, e.ethnicity_cd, e.appl_person_id from applicants a
inner join ucpsom_production_ucpsom_production.ETHNICITY e
on e.appl_person_id = a.id
where a.amc_id = 12977319
Ошибка в операторе соединения. Оператор должен читать «e.appl_person_id = a.appl_person_id
» и не возвращать никаких записей, потому что нет значения e.appl_person_id
, равного «80cbacb2-8444-11df-acd2-12313b079cc4», значение a.id
.
В этом случае MySQL сопоставляет значения 80 (для e.appl_person_id) со значениями "80cbacb2-8444-11df-acd2-12313b079cc4" (для a.id). Таким образом:
80 = "80cbacb2-8444-11df-acd2-12313b079cc4".
* Примечание: e.app_person_id - это десятичное число, a.id - строка. * Похоже, MySQl сравнивает первые два символа значения a.id со значением e.appl_person_id.
Может кто-нибудь объяснить, почему это происходит с MySQL, а также, является ли этот MySQL специфическим по своей природе?
Большое спасибо.