У меня есть две объединенные таблицы, родительский показывает имя устройства, дочерние показывает температуры записи, которые могут быть вставлены либо автоматическим процессом (AUTO), либо пользователем. Таким образом, для данных чтения единицы измерения с простого соединения будет выглядеть так:Выберите последние из объединенной таблицы, исключая дубликаты
UNIT TEMP TIMESTAMP DATA_SOURCE
ABC -20 10:26 AUTO
ABC -19 11:27 USER
ABC -19 11:27 AUTO
Целью является выбор последнего показания температуры. Я могу использовать подзапрос сделать так:
SELECT A.UNIT, B.TEMP, B.TIMESTAMP,B.DATA_SOURCE
FROM units_table A left outer join readings_table B on A.Gkey=B.unit_gkey
WHERE B.TIMESTAMP=
(SELECT MAX(TIMESTAMP) FROM readings_table B1
WHERE A.Gkey=B1.unit_gkey)
Было бы просто, но в приведенном выше примере есть две точные метки времени, так что я буду получать два чтения. В таком случае я бы хотел проигнорировать источник AUTO. Есть ли элегантный способ сделать это?
Edit: быть ясно, что я хочу только результат одна строка: ABC -19 11:27 USER
Редактировать: nevermind, его работа только вы ошиблись в соединении :) 'rt.unit_gkey = ut.gkey' – Yasskier