Получить самые последние записи по дате и идентификатору поля mySql - PullRequest
0 голосов
/ 21 октября 2019

У меня есть такая таблица:

+--------+--------+------+----------+----+----+
| id     | id2    | id3  | date     |at1 | at2|
+--------+--------+------+----------+----+----+
| 111    |        |      | 5/12/19  | a  |    |
| 111    |  10    |      | 2/12/19  | b  |  j |
| 111    |  10    | 45   | 2/12/19  | f  |    |
| 111    |  10    | 45   | 3/12/19  | c  |    |
| 222    |  1010  |      | 5/12/19  |    | e  |
| 222    |  1010  |  56  | 1/12/19  |a   | d  |
| 33     |  1010  |  56  | 5/12/19  |    | c  |
+---------------------------------------------+

Я хотел бы получить самые последние записи, основанные на date и id, и выставить только те строки, которые имеют комбинацию id и(id2 или id3). В приведенной мною таблице результат должен выглядеть следующим образом:

+--------+--------+------+----------+----+----+
| id     | id2    | id3  | date     |at1 | at2|
+--------+--------+------+----------+----+----+
| 111    |  10    |      | 2/12/19  | b  |  j |
| 111    |  10    | 45   | 3/12/19  | c  | a  |
| 222    |  1010  |      | 5/12/19  |a   | e  |
| 222    |  1010  |  56  | 1/12/19  |a   | e  |
| 33     |  1010  |  56  | 5/12/19  |    | c  |
+---------------------------------------------+

Я пытался реализовать его с помощью этого запроса (из другого вопроса), но мне не удалось, так как я не совсем знаком с sql:

select t.id, t.id2, t.id3, t.date,
  coalesce(t.at1, g.at1) at1, coalesce(t.at2, g.at2) at2
from tab t inner join (
  select id, id2, id3,
    max(date) date, max(at1) at1, max(at2) at2
  from tab  
  group by id2, id3  
) g on g.pm = t.pm and g.pm2 <=> t.pm2 and g.pm3 <=> t.pm3 and g.date = t.date 

Заранее спасибо.

...