20

通过在 PG 9.1 上使用 libpq,我正在尝试编写查询以从具有最高索引“my_id”的行中获取值:

SELECT my_id, col2, col3 
FROM mytable 
WHERE my_id = MAX(my_id)

这给了我错误:

错误:WHERE 子句中不允许聚合...

如何正确编写这样的查询?

4

5 回答 5

44

如果您的目标是获取具有最高 my_id 值的行,那么以下查询应该达到相同的目标。

SELECT my_id, col2, col3 
FROM mytable 
ORDER BY my_id DESC 
LIMIT 1
于 2013-06-05T09:23:22.400 回答
12

只需订购my_id并仅使用第一条记录limit 1

SELECT my_id, col2, col3
FROM mytable 
order by my_id desc
limit 1

另一种但性能较差的方法是

SELECT my_id, col2, col3
FROM mytable 
where my_id = (select max(my_id) from mytable)
于 2013-06-05T09:23:58.110 回答
6

子查询可能对您有所帮助

SELECT my_id, col2, col3 FROM mytable WHERE my_id = (select MAX(my_id) FROM mytable)
于 2013-06-05T09:27:59.423 回答
3
SELECT my_id, col2, col3 FROM mytable WHERE my_id = (select MAX(my_id) FROM mytab)

或使用

SELECT my_id, col2, col3 FROM mytable ORDER BY my_id DESC LIMIT 1
于 2013-06-05T09:23:22.257 回答
0

当您在 my_id 上有索引时,带有子查询的索引应该更快。当您没有索引时,请使用“order by”。(obv。取决于数据库大小,如果相关)

于 2013-06-05T13:16:40.270 回答