-PR-
締切済み

POSTGRESでMYSQLと同じ結果を得る方法

  • 暇なときにでも
  • 質問No.6960741
  • 閲覧数183
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 18% (2/11)

create table test (a varchar(10), b varchar(10));
insert into test values ('a','a');
insert into test values ('b','b');
insert into test values ('b','c');
insert into test values ('c','d');
select count(*), a, b from test group by a;

上記を実行するとMYSQLでは
+----------+------+------+
| count(*) | a | b |
+----------+------+------+
| 1 | a | a |
| 2 | b | b |
| 1 | c | d |
+----------+------+------+
という結果になる。

POSTGRESでは以下のエラーになります。
ERROR: column "test.b" must appear in the GROUP BY clause or be used in an aggr
egate function

select count(*), a, b from test group by a, b; とすると結果が変わってしまいます。
MYSQLと同じ結果をPOSTGRESで得るいい方法はありますか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル13

ベストアンサー率 60% (431/717)

まずMySQLの「GROUP BYで指定されていない項目を集計関数なしに指定できる」というのがSQLの規格から外れていることを認識してください。
その上で
http://postoro.blogspot.com/2011/03/mysql-group-by-select.html
にありますけれど、どの行の値が使われるかは保証されません。

もし、MySQLの項目で最小値を表示したいということなら

select count(*), a, min(b) from test group by a;

にすればMySQL、PostgreSQLともに同一の結果を取得できます。


このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ