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。はデータベースのサイズに依存します)