3

以下は私が持っているものです

++++++++++++++++++++++++
+ id + field1 + field2 +
++++++++++++++++++++++++
+ 1  +  1     +        +
+ 1  +  23    +        +
+ 1  +        +   1    +
+ 1  +        +   33   +
+ 2  +  55    +        +
+ 2  +        +   2    +
+ 2  +        +   23   +
++++++++++++++++++++++++

私が欲しいのは

++++++++++++++++++++++++
+ id + field1 + field2 +
++++++++++++++++++++++++
+ 1  +  23    +   33   +
+ 2  +  55    +   23   +
++++++++++++++++++++++++

行を(最大のデータで)結合し、テーブルにあるように複数の行に対してユーザーのデータを1行に表示したい。

それを行う方法はありますか?

:すべてのフィールドのデータを持つ行はありません。1 つの行に 1 つのデータのみ、およびユーザーごとに 2 つ以上の行。

で試しました

SELECT id, GROUP_CONCAT(MAX(field1)), GROUP_CONCAT(MAX(field2)) from myTable
GROUP BY id;

しかし、そのエラーを与える

Invalid use of group function:

sqlfiddle のデータ

この質問は、以前の質問よりも少し進んでおり、(複数の行から) 1 つの行にデータを表示しています。

4

2 に答える 2

2
SELECT id, MAX(field1), MAX(field2) FROM myTable GROUP BY id;
于 2012-06-30T08:08:43.980 に答える
2

この単純なクエリでうまくいくはずです。

SELECT id, MAX(field1), MAX(field2)
FROM myTable
GROUP BY id;

同じIDを持つすべての行をグループ化し、各列の各グループ内の最大値を選択します

于 2012-06-30T08:09:27.170 に答える