Я пытаюсь написать запрос MySQL, который изменяет значение возвращаемого поля на основе значений, возвращаемых из присоединенного запроса. В настоящее время я использую оператор case для получения поля. Он запускается и возвращает некоторое значение для одного из полей, но никогда не возвращает значение ELSE. Я получаю только одно поле или другое.
В настоящее время я получаю значение для analytics.t1apps.c_s_tagsource, но никогда не вижу значение для analytics.t1sizmek. medium
. Я даже пытался установить для ELSE значение «Ничего», и это, похоже, не проходит.
Мой SQL-запрос выглядит следующим образом:
SELECT analytics.t1apps.id,....,analytics.t1apps.c_s_tagsource,
....`,analytics.t1sizmek.`medium`,
CASE
WHEN (analytics.t1apps.c_s_tagsource IS NOT NULL) OR analytics.t1apps.c_s_tagsource<>'' THEN analytics.t1apps.c_s_tagsource
ELSE analytics.t1sizmek.`medium`
END AS sourceoftruth
FROM analytics.t1apps,analytics.t1sizmek
WHERE analytics.t1apps.candidateid=analytics.t1sizmek.candidateid AND analytics.t1apps.reqnum=analytics.t1sizmek.reqid;
У меня такое ощущение, что это не работает, потому что это производное табличное значение, но неспособность установить статическое значение в остальном поставило меня в тупик.
Я ожидаю, чтобы значение возвращаемого поля для 'sourceoftruth' было значением в analytics.t1apps.c_s_tagsource, если это не пустое значение, в противном случае возвращает значение analytics.t1sizmek. medium
.
Спасибо за вашу помощь.