найти записи последней даты вместе с другими соответствующими значениями при определенных условиях в MYSQL - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть таблица под названием «история» с некоторыми примерами данных ниже:

SITE_ID	TARGET_PRIMARY_KEY	TARGET_TABLE	UPDATED_AT	        USER_ID
1	            1025test	4	            2018/10/25 12:01	e4
1	            1025test	4	            2018/10/25 12:02	e1
1	            1025test	4	            2018/10/25 12:03	e2
1	            1025test	4	            2018/10/25 12:04	e3
1	            aaa	        4	            2018/10/19 15:01	e1
5	            aaa	        7	            2018/10/19 15:02	e2
1	            aaa	        4	            2018/10/19 15:03	e3
1	            aaa	        4	            2018/10/19 15:04	e4
1	            aaa	        4	            2018/10/19 15:05	e5
1	            aaa	        4	            2018/10/19 15:06	e6

Чего я хочу добиться: для каждой уникальной комбинации "SITE_ID" и "TARGET_PRIMARY_KEY" выберите запись, которая имеет наибольшее (последнее) значение "UPDATED_AT" а также убедитесь, что соответствующий "USER_ID" правильный.

Ожидаемый результат:

1	1025test	4	2018/10/25 12:04	e3
1	aaa	        4	2018/10/19 15:06	e6

Я пробовал следующий sql:

    SELECT 
        hist.SITE_ID AS siteId,
        TARGET_PRIMARY_KEY AS skey,
        hist.TARGET_TABLE AS targetTable,
        MAX(UPDATED_AT) AS lastActionDate,
        hist.USER_ID
    FROM
        history AS hist
    WHERE
        hist.TARGET_TABLE = 4
            AND hist.SITE_ID = 1
    GROUP BY TARGET_PRIMARY_KEY

Однако информация "USER_ID", похоже, не синхронизирована с "UPDATED_AT", который я получил:

1	1025test	4	2018/10/25 12:04	e4

Может кто-нибудь дать мне совет?Спасибо.

1 Ответ

0 голосов
/ 21 ноября 2018

Я бы использовал для этого коррелированный подзапрос:

select h.*
from history h
where h.updated_at = (select max(h2.updated_at)
                      from history h2
                      where h2.site_id = h.site_id and
                            h2.target_primary_key = h.target_primary_key
                     );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...