LINUX.ORG.RU

Последняя запись по комбинации колонок

 , , ,


0

1

Имеются таблицы A, B, C, D. У всех есть первичные автоинкрементные ключи. A, B, C - однотипны, используются для хранения неких сущностей. А вот таблица D содержит внешние ключи на записи в таблицах A, B, C, а так же время добавления записи.

A: int id B: int id C: int id D: int id, int a_id, int b_id, int c_id, timestamp insert_timestamp

Могу ли я получить из таблицы D последнюю вставленную запись по каждой из комбинаций a_id, b_id, c_id?

Запрос должен работать на mysql, oracle и sqlite.


Ответ на: комментарий от goingUp

Время вставки не обязательно должно равняться текущему времени. Оно может быть произвольным, так что нет гарантии того, что id возрастает так же как и время вставки.

Тогда уж:

select * from D where insert_timestamp in (select max(insert_timestamp) from D group by a_id, b_id, c_id)

Насколько это кошерно? Я так понимаю необходим один индекс на (a_id, b_id, c_id) и один на insert_timestamp?

totik
() автор топика
Ответ на: комментарий от totik

Если у тебя insert_timestamp уникально вообще, а не в рамках определенных a_id, b_id, c_id, то будет работать, если нет, нужно по другому.

goingUp ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.