简体   繁体   中英

PostgreSQL, SELECT from max id

By using libpq on PG 9.1, I am trying to write query to get values from row with highest index 'my_id':

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

That gives me error:

ERROR: aggregates not allowed in WHERE clause...

How to write such query properly?

If your goal is to get the row with the highest my_id value, then the following query should achieve the same goal.

SELECT my_id, col2, col3 
FROM mytable 
ORDER BY my_id DESC 
LIMIT 1

Just order by my_id and take only the first record with limit 1

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

Another but less performant way would be

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

when you have an index on my_id the ones with the subquery should be faster. when you dont have an index take the "order by". (obv. depends on database size if relevant)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM