#mysql
#mysql
Вопрос:
Любой совет был бы отличным:
Я выполняю MIN()
запрос, в котором у меня есть номер учетной записи с одинаковым статусом и двумя разными временными метками
пример:
SELECT
DATE(`created_at`) as date,
account_id,
changed_by_id,
status
FROM statuses
WHERE `changed_to` = 'entered'
AND account_id = 49794;
Результаты:
date account_id changed_by_id status
2011-04-05 49794 17 entered
2011-03-16 49794 18 entered
когда я пытаюсь извлечь min(DATE(created_at))
и GROUP By account_id
, я не получаю правильного changed_by_id
для этого account_id
и date
кто-нибудь может посоветовать, что мне нужно сделать с запросом, чтобы получить соответствие date
с changed_by_id
?
Спасибо
Комментарии:
1. Это типичный запрос groupwise max.
Ответ №1:
Не тестировался, но это что-то похожее на это
select
t1.DATE(`created_at`) as date,
t1.account_id,
t1.changed_by_id,
t1.status
from statuses t1
where (date(created_at) = (select min(date(created_at))
from statuses t2
where t1.account_id=t2.account_id))
and t1.account_id = 49794;
Ответ №2:
Упорядочивайте по дате и выделяйте только первую строку:
ВЫБЕРИТЕ ДАТА (`created_at`) как дата, account_id, changed_by_id, статус ИЗ статусов ГДЕ `changed_to` = 'введено' И account_id = 49794 ПОРЯДОК НА 1 ОГРАНИЧЕНИЕ 1;
Возможно, это не самый элегантный вариант, но он понятен и эффективен.