Я хотел бы получить одну последнюю запись в зависимости от времени для каждого идентификатора. Например, если я передаю идентификатор как 1 и 2, результатом должно быть 2 строки, как указано ниже.
Например:
Таблица сотрудников
############################################## id time ############################################## 1 04-04-18 06:46:55.191000000 PM 1 04-04-18 06:43:30.846000000 PM 1 04-04-18 06:38:30.968000000 PM 2 04-04-18 06:33:32.811000000 PM 2 04-04-18 06:28:32.337000000 PM 2 04-04-18 06:23:31.256000000 PM 3 04-04-18 06:16:53.395000000 PM 3 04-04-18 06:13:30.292000000 PM 3 04-04-18 06:08:30.652000000 PM
ожидаемый результат
############################################## id time ############################################## 1 04-04-18 06:46:55.191000000 PM 2 04-04-18 06:33:32.811000000 PM
Я попробовал запрос, упомянутый ниже, но это дает единственный результат. Пробовал другие варианты, не помогло. Любые предложения, пожалуйста?
SELECT * FROM Employee emp WHERE emp.id IN ('1','2')
ORDER BY CREATED DESC FETCH FIRST 1 ROWS ONLY
Как называется ваше поле первичного ключа?
Нет первичного ключа, записи доступны с повторяющимся ключом идентификатора.


У вас должна быть возможность использовать оператор Group By:
SELECT emp.id, emp.time FROM Employee emp WHERE emp.id in (1,2) GROUP BY emp.id ORDER BY ....
Это не сработало, это дает группу, связанную с ошибкой, по выражению. Мне нужен запрос для получения всех столбцов, у меня есть другие столбцы в таблице, о которых я не упомянул. Может быть, выбрать * было бы полезно.
SELECT
emp.id, MAX(emp.time) as EmpTime
FROM Employee emp
WHERE emp.id in (1,2)
GROUP BY emp.id
ORDER BY emp.id
У меня есть и другие столбцы в таблице, и мне нужно получить все столбцы. Мне нужно с выбором *.
мой ответ здесь stackoverflow.com/questions/46671164/…
Не помогло, похоже, проблема с синтаксисом, я пытаюсь использовать оракул. ORA-00905: ошибка отсутствия ключевого слова. выберите * из внутреннего объединения сотрудников ad1 (выберите MAX (время) из группы сотрудников по идентификатору) как ad2 на (ad1.id = ad2.id и ad1.time = ad2.time)
Точно сказать не могу. Вам нужно выбрать ID из вашего дополнительного выбора, и, возможно, вам также понадобится псевдоним для столбца MAX(time)
Возможный дубликат Как я могу выбрать только первое отличное совпадение из поля в MySQL?