Минимальный запрос Mysql

#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;

Возможно, это не самый элегантный вариант, но он понятен и эффективен.