web-dev-qa-db-ja.com

PostgreSQL、最大IDから選択

PG 9.1でlibpqを使用して、最高のインデックス 'my_id'を持つ行から値を取得するクエリを記述しようとしています。

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

それは私にエラーを与えます:

エラー:WHERE句では集計は許可されていません...

そのようなクエリを適切に書く方法は?

14
Wine Too

My_idの値が最も高い行を取得することが目標である場合、次のクエリでも同じ目標を達成できます。

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

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)
9
juergen d

サブクエリはあなたを助けるかもしれません

SELECT my_id, col2, col3 FROM mytable WHERE my_id = (select MAX(my_id) FROM mytable)
5
Muhammad Hisham
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
2
PSR

my_idにインデックスがある場合は、サブクエリの方が高速です。インデックスがない場合は、「order by」を使用します。 (関連する場合、obv。はデータベースのサイズに依存します)

0
Chris