通过在 PG 9.1 上使用 libpq,我正在尝试编写查询以从具有最高索引“my_id”的行中获取值:
SELECT my_id, col2, col3
FROM mytable
WHERE my_id = MAX(my_id)
这给了我错误:
错误:WHERE 子句中不允许聚合...
如何正确编写这样的查询?
通过在 PG 9.1 上使用 libpq,我正在尝试编写查询以从具有最高索引“my_id”的行中获取值:
SELECT my_id, col2, col3
FROM mytable
WHERE my_id = MAX(my_id)
这给了我错误:
错误:WHERE 子句中不允许聚合...
如何正确编写这样的查询?
如果您的目标是获取具有最高 my_id 值的行,那么以下查询应该达到相同的目标。
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)
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 上有索引时,带有子查询的索引应该更快。当您没有索引时,请使用“order by”。(obv。取决于数据库大小,如果相关)