Строки, содержащие нулевые значения во всех столбцах, возвращаются, когда в SQL-запросе используется агрегатная функция Max (date) - PullRequest
0 голосов
/ 26 января 2019

Я использую базу данных Mysql и у меня проблема с внутренним соединением.Я использую агрегатную функцию max (dn.on_date) в запросе, чтобы выбрать только последние строки даты.это работает нормально, когда строки найдены с соответствующими критериями, но когда условие условия становится ложным, возвращается 1 строка, содержащая значение NULL для всех столбцов.Я хочу игнорировать эту строку, которая будет возвращена как результат.

Структуры таблиц следующие: просмотр структуры таблицы и ее отношения

мой запрос похож на :

SELECTd.first_name, d.last_name, d.mobile, dn.don_amount как сумма, max (dn.on_date) как on_date
ОТ доноров d
пожертвование внутреннего объединения dn на d.mobile = dn.don_id
WHERE LOWER (first_name) LIKE LOWER ('dinesh%') упорядочено по d.mobile asc LIMIT 0,4

Нежелательные результаты возвращаются следующим образом : просмотреть результаты
Я хочу, чтобы он не возвращал ничего, когда условие не соответствует

Я пытался так, но это не работает, и результат такой же, как предыдущий

ВЫБРАТЬ d.first_name, d.last_name, d.mobile, dn.don_amount в качестве суммы, max (dn.on_date) в качестве on_date
ОТ доноров d
пожертвование внутреннего объединения dn on d.mobile = dn.don_id
ГДЕ d.mobile НЕ НЕДЕЙСТВИТЕЛЕН И НИЖЕ (имя_символа) ПОСЛЕ НИЖНЕГО ('dinesh%') порядка d.mobile asc LIMIT 0,4

1 Ответ

0 голосов
/ 26 января 2019

вы использовали статистическую функцию, но не видели группировку в своем запросе

SELECT d.first_name, d.last_name, d.mobile, dn.don_amount as amount, max(dn.on_date) as on_date 
FROM donors d 
inner join donation dn on d.mobile = dn.don_id 
WHERE LOWER(first_name) LIKE 'dinesh%'
group by d.first_name, d.last_name, d.mobile, dn.don_amount
order by d.mobile asc 
LIMIT 0,4
...