
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSQL で自動採番する方法
-
joinの場合のテーブル名の別名...
-
Excelでしりとりを作る方法
-
データ削除とSQL*Loaderでのイ...
-
SELECT INTOで一度に複数の変数...
-
Access2010のVBAで異体字の記述
-
SQLです!!教えてください。あ...
-
SQLで、Join句で結合したテ...
-
場合により問い合わせが異常に...
-
データがリストアできない!!
-
既にテーブルが存在する場合の...
-
Oracl[10g]の SQL文について(No.8)
-
データベース ユーザの「このユ...
-
T-SQLで任意の箇所で強制終了す...
-
あってますか?SQL
-
結合したテーブルをSUMしたい
-
ExcelVBAで複数のコマンドボタ...
-
既存データをINSERT文にして出...
-
SQLをExcelで書いている人を良...
-
テーブル名が可変の動的SQLをフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLで期間をずらした集計処理
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
truncate tableを使って複数の...
-
UPDATEで既存のレコードに文字...
-
PostgreSQLのtimestamp型で時間...
-
オラクルのUPDATEで複数テーブル
-
既存データをINSERT文にして出...
-
エラーを起こす方法
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
SQLサーバに対するSQL文で抽出...
-
UPDATEの更新前の値を取得したい
-
JDBCを使ってdate型へのINSERT...
-
テーブル名が可変の場合のクエ...
-
既にテーブルが存在する場合の...
おすすめ情報