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ランキング
-
joinの場合のテーブル名の別名...
-
SQLのこと:distinctして並び替...
-
SQL 複数条件を設定
-
IDとパスワードについて。
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
SELECTした結果に行番号を求めたい
-
PostgreSQLのtimestamp型で時間...
-
Accessの構成をコピーしたい
-
timestampのデータはどのように...
-
テーブル名が可変の場合のクエ...
-
追加クエリで重複データなしで...
-
DB2のSQLコマンドについて
-
truncate tableを使って複数の...
-
ExcelのMatch関数のようなもの...
-
結合したテーブルをSUMしたい
-
Access にて "mm:ss.0" 形式の ...
-
エラーを起こす方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLのこと:distinctして並び替...
-
postgreSQLのupdateについて
-
SQL 複数条件を設定
-
access2000のクエリについて
-
SQLで期間をずらした集計処理
-
SQL文の長さ制限について
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
-
Accessで今日から5日後
おすすめ情報