
No.2ベストアンサー
- 回答日時:
>今回の場合、かまわないという状況
だとすると以下のSQLで問題ないんじゃないでしょうか?
>select * from (select distinct on (aaa) * from bbb) as ccc order by ddd
基本的にdistinctを置き換えるのはgroup byだと思いますが、この場合group byでは面倒なので、distinctで良いと思います。
(再帰結合とかすればいけそうな気もするけど、できても多分すげーめんどいと思う)
5ヶ月間があいてしまいました。
すみません。
おかげさまで、「とりあえず これでいっか」と思えました(^-^;
PostgreSQLとMySQLを触る機会がありまして、いろいろ勉強していた時期でした。
ありがとうございました。
No.1
- 回答日時:
>select * from (select distinct on (aaa) * from bbb) as ccc order by ddd
distinctってほとんど使わんのであれですが、このSQLだと以下のような場合結果が不定になりませんか?
(aaaが重複している場合、from内のselectでdddの2が返るか、3が返るか特定できない)
http://www.postgresql.jp/document/pg800doc/html/ …
aaa ddd
1 2
1 3
#普通にこんな感じでOKらしいです。
#select distinct on (aaa) * from bbb order by ddd
>パフォーマンス的にも良いSQL
PostgreSQLのdistinctはそんなによくないようです。
(Oracleとかだと早いらしいですが)
http://www2b.biglobe.ne.jp/~caco/fourth_edition/ …
Group By (*)ができないので、*がほしいならdistinctの方がいいかもしれませんが、それ以外ならGroup Byの方がいいかも。
(Group Byの方が移植性高そうだし)
この回答への補足
レスありがとうございます。
> (aaaが重複している場合、from内のselectでdddの2が返るか、3が返るか特定できない)
は、実は今回の場合、かまわないという状況です。
なぜ困っているかといいますと、postgresでは、
select distinct on (aaa) * from bbb order by aaa, ddd
このように書かねばならないようです。
distinct on (~)で指定したフィールドが、order by の最初に現れないといけないと。
つまり、aaa順になるので、並び替えたくても並び変わらないんです (--;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLにて指定日付より前、かつ最...
-
列が存在しないと言われる
-
postgresql についてです
-
PostgreSQLについて教えてくだ...
-
SQLでUPSERTを一度に複数行やる...
-
エクセルで縦のカラムデータを...
-
postgreSQLのint型は桁数指定が...
-
自治会総会の成立要件について
-
Windows10でQuickTimeがインス...
-
Pythonがインスールできない
-
数値が定期的にあらわれる文字...
-
SQL SELECT文 別テーブルのレコ...
-
CPRM decrypterのエラーコード...
-
PostgresSQLの環境設定について
-
Windows10がインストールできま...
-
select文の書き方「半角カナ+...
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
三段論法を真理値表で証明する
-
sqlの中で、 例えば条件句で AN...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行の結果を単一列に連結
-
2つの列からの最大値取得
-
SQLのこと:distinctして並び替...
-
SQL 複数条件を設定
-
SQLで期間をずらした集計処理
-
order byで並び変えし最大値の...
-
SQLについて
-
SQLでのcount方法
-
同一フィールドの違う値ごとに...
-
SQLで2年連続で値が上昇した年...
-
joinの場合のテーブル名の別名...
-
Postgresql Mecabでの解析について
-
CREATE VIEWについて
-
月に対応するフィールドを抽出...
-
sql,union,これはエラーですか...
-
PostgreSQL で自動採番する方法
-
前後のレコードを取得する
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
おすすめ情報