mysql выберите последние данные на основе даты - PullRequest
0 голосов
/ 18 марта 2020
id | status  |  dateCreate
1  |   0     |  2020-02-15 15:41:06
2  |   1     |  2020-02-18 15:41:06
1  |   1     |  2020-02-18 15:41:06
2  |   0     |  2020-02-25 15:41:06
1  |   1     |  2020-03-01 15:41:06
4  |   1     |  2020-03-18 15:41:06
3  |   1     |  2020-03-19 15:41:06
7  |   0     |  2020-03-20 15:41:06
5  |   1     |  2020-03-21 15:41:06
4  |   0     |  2020-03-21 15:41:06
8  |   1     |  2020-03-22 15:41:06
4  |   1     |  2020-03-23 15:41:06

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

id |  status  |  dateCreate
1  |   1      |  2020-03-18 15:41:06
4  |   1      |  2020-03-18 15:41:06
3  |   1      |  2020-03-19 15:41:06
5  |   1      |  2020-03-21 15:41:06
8  |   1      |  2020-03-22 15:41:06

, так как последний статус id 2 был 0

, и это мой пример запроса, который не получает именно то, что я хочу, так как он также получает id 2, так как раньше он имел статус 1. в результате я хотел получить последний статус на основе dateCreate со статусом 1

SELECT A.id,A.status, MAX(A.dateCreate)
        FROM (SELECT id, status, dateCreate
              FROM table status = 1) A GROUP BY A.id ORDER BY A.dateCreate desc

1 Ответ

0 голосов
/ 18 марта 2020

Присоединяйтесь и тестируйте

select t.*
from t
join (select id, max(datecreate) maxdate from t group by id) s on s.id = t.id and s.maxdate = t.datecreate 
where t.status = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...