前提・実現したいこと
現在PostgreSQLを使用してシステムを作成しています。
その中でSELECT MAXを使用して、最大数を求めるという処理をしていたのですが、
システムの変更によりMAX値が2つ、3つ、複数ある場面が出来てしまいました。
MAX値が複数ある場合、他の値のMAXを見て一つだけ行を出力できるようにしたいです。
少し日本語がおかしいかもしれませんが伝わっていなければ質問していただきたいです。
該当のソースコード
PostgreSQL
1CREATE TABLE public.data 2( 3 date date, 4 update date, 5 id integer 6) 7 8TABLESPACE pg_default; 9 10ALTER TABLE public.data 11 OWNER to postgres;
PostgreSQL
1SELECT * FROM data WHERE date = (SELECT MAX(date)FROM data AS us WHERE data.id = us.id) ORDER BY id ASC; 2 3//date.idではなくdata.idのコードミスでした。
サンプルデータを入力したテーブル
date | update | id |
---|---|---|
2021-02-25 | 2021-02-26 | 1 |
2021-02-26 | 2021-02-26 | 1 |
2021-02-26 | 2021-02-25 | 1 |
2021-02-26 | 2021-02-25 | 2 |
2021-02-25 | 2021-02-25 | 2 |
提示したコードを入力した場合
date | update | id |
---|---|---|
2021-02-26 | 2021-02-26 | 1 |
2021-02-26 | 2021-02-25 | 1 |
2021-02-26 | 2021-02-26 | 2 |
実際出力したいもの
date | update | id |
---|---|---|
2021-02-26 | 2021-02-26 | 1 |
2021-02-26 | 2021-02-26 | 2 |
同じIDのデータが二つ以上ある場合updateの日付が一番最新の物のみを出力するというSQL文を書きたいです。
試したこと
色々調べてみたのですが自力で探すことが出来なかったため、質問させていただきました。
よろしお願いいたします。
回答1件
あなたの回答
tips
プレビュー