使用选择的libpq在PG 9.1,我想写查询从排得值与指数最高的“添加my_id”:PostgreSQL的,从最大ID
SELECT my_id, col2, col3
FROM mytable
WHERE my_id = MAX(my_id)
这给了我错误:
ERROR: aggregates not allowed in WHERE clause...
如何正确编写这样的查询?
使用选择的libpq在PG 9.1,我想写查询从排得值与指数最高的“添加my_id”:PostgreSQL的,从最大ID
SELECT my_id, col2, col3
FROM mytable
WHERE my_id = MAX(my_id)
这给了我错误:
ERROR: aggregates not allowed in WHERE clause...
如何正确编写这样的查询?
如果你的目标是获得最高添加my_id值的行,那么下面的查询应达到同样的目的。
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 mytab)
或使用
SELECT my_id, col2, col3 FROM mytable ORDER BY my_id DESC LIMIT 1
只是为了通过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)
子查询可以帮助你
SELECT my_id, col2, col3 FROM mytable WHERE my_id = (select MAX(my_id) FROM mytable)
当你在my_id上有索引时,子查询中的索引应该更快。当你没有一个索引采取“顺序”。 (如果相关,取决于数据库大小)
也许相反。 Postgres优化了索引适用的“LIMIT 1”查询。 –
就是这样,谢谢。我只能接受一个(最快),但所有答案都有帮助,对不起。 –