SQL: получить последнюю оплату от всех клиентов? - PullRequest
0 голосов
/ 11 апреля 2011

я использую Mysql 5.1 и учитывая таблицу платежей со столбцами customerid, дату оплаты мне нужен последний платеж всех клиентов. итак таблица с записями

row, customerid, paymentdate
1    5           2011-03-01
2    5           2011-04-01
3    6           2011-01-01
4    7           2011-01-01
5    7           2011-02-01

должен вернуть строки 2,3,5 запрос

select max(paymentdate),customerid from payments where customerid=5;

работ, которые я пытался получить в каком-то месте, где клиент IN (...), но безуспешно, поскольку он возвращает 2 столбца, а не только 1

спасибо


в конце концов ответы вдохновили меня на поиск соответствующей информации и решили проблему с следующий запрос (как описано в комментарии к статье)

select * from (select * from payments order by paymentdate desc) as p group by customerid;

та же проблема с форума mysql решения из связанной статьи MySQL

Ответы [ 2 ]

5 голосов
/ 11 апреля 2011

Вы должны group by Customerid.

select max(paymentdate),customerid from payments group by customerid;
0 голосов
/ 11 апреля 2011

Другой подход:

Select paymentdate,customerid from payments group by customerid order by paymentdate DESC;

Или даже:

Select distinct(customerid),paymentdate from payments order by paymentdate DESC;

Добавление DESC к заказу приводит к тому, что самые последние даты возвращаются первыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...