Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于检索多个重复id的单行的SQL查询_Sql_Postgresql - Fatal编程技术网

用于检索多个重复id的单行的SQL查询

用于检索多个重复id的单行的SQL查询,sql,postgresql,Sql,Postgresql,我想根据每个id的时间检索单个最新记录。 例如,如果我将id传递为1&2,结果应该是下面提到的2行 例如: 员工表 预期结果 我尝试了下面提到的查询,但只得到了一个结果。 尝试了其他的选择,但没有帮助。有什么建议吗 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.tim

我想根据每个id的时间检索单个最新记录。 例如,如果我将id传递为1&2,结果应该是下面提到的2行

例如:

员工表

预期结果

我尝试了下面提到的查询,但只得到了一个结果。 尝试了其他的选择,但没有帮助。有什么建议吗

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 ....

您应该能够使用Group By运算符:

SELECT emp.id, emp.time FROM Employee emp WHERE emp.id in (1,2) GROUP BY emp.id ORDER BY ....

可能与主键字段的名称重复?没有主键,条目具有重复的id键。可能与主键字段的名称重复?没有主键,条目具有重复的id键。表中还有其他列,我需要获取所有列。我需要使用select*。在这里看到我的答案没有帮助,看起来语法有问题,我正在使用oracle。ORA-00905:缺少关键字错误。从员工ad1内部联接中选择*从员工组中按id选择MAXtime作为ad1上的ad2。id=ad2.id和ad1.time=ad2.time不确定。您确实需要从子选择中选择ID,并且可能还需要MAXtime列的别名。表中还有其他列,我需要获取所有列。我需要使用select*。在这里看到我的答案没有帮助,看起来语法有问题,我正在使用oracle。ORA-00905:缺少关键字错误。从员工ad1内部联接中选择*从员工组中按id选择MAXtime作为ad1上的ad2。id=ad2.id和ad1.time=ad2.time不确定。您确实需要从子选择中选择ID,并且可能还需要MAXtime列的别名。这不起作用,它会给出与错误相关的group by表达式。我需要查询来获取所有列,表中还有我并没有提到的其他列。可能是select*会有帮助。这不起作用,它通过表达式给出了与错误相关的组。我需要查询来获取所有列,表中还有我并没有提到的其他列。可能是select*会有帮助。
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