20

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

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

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

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

そのようなクエリを適切に記述する方法は?

4

5 に答える 5

44

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

SELECT my_id, col2, col3 
FROM mytable 
ORDER BY my_id DESC 
LIMIT 1
于 2013-06-05T09:23:22.400 に答える
12

並べ替えて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)
于 2013-06-05T09:23:58.110 に答える
3
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
于 2013-06-05T09:23:22.257 に答える
0

my_id にインデックスがある場合、サブクエリを使用する方が高速になるはずです。インデックスがない場合は、「順序付け」を取ります。(明らかに、関連する場合はデータベースのサイズに依存します)

于 2013-06-05T13:16:40.270 に答える