※ ChatGPTを利用し、要約された質問です(原文:ポスグレで指定した中で最大のレコードを1件取得する)
ポスグレで指定した中で最大のレコードを1件取得する方法
このQ&Aのポイント
ポスグレで指定したテーブルの中から最大のレコードを1件取得する方法について教えてください。
テーブル内の指定した条件に一致するレコードの中で最大のレコードを1件取得する方法をポスグレで実現したいです。
ポスグレを使用して、特定の条件に合致するレコードの中で最も大きな値を持つレコードを1件だけ取得する方法を教えてください。
ポスグレで指定した中で最大のレコードを1件取得する
ポスグレで指定した中で最大のレコードを1件取得する方法を教えてください。
下記の項目を持つテーブルがあるとします。
・部署
・氏名
・日付
・連番
・内容
KEY(部署,氏名,日付,連番)
部署と氏名を指定した中で直近のレコードを1件だけ取得したいです。
例えば
select * from テーブル
where 部署 = 値
and 氏名 = 値
order by 日付 desc ,連番 desc
で頭の1件を抜ければよいのですが、
limit 1を指定しても、どうやらorder byより先にlimitがかかっているようで、並び替えた後の最初の1件をとれません。
また、
ソート項目が1つだけなら
select * from テーブル
where 部署 = 値
and 氏名 = 値
and 日付 = (select max(日付) from テーブル t1 where t1.部署 = 値 and t1.氏名 = 値)
という事もできますが、
日付が最大の中での連番が最大というのはさらに一手間必要です。
何か良い方法はありませんか?
全件持ってきた後にアプリ側で最初の1件だけ使うのではなく、postgres内で1件にしてアプリ側に渡したいです。
お礼
有難うございます。 limit が先に効く事はないのですね。 試してみます。