2012-02-23 10 views
4

すべてのフィールドを1つの行にグループ化する要求を作成するにはどうすればよいですか?すべてのフィールドを1つの行にグループ化する

表:

id | type 
--------- 
1 | 1 
1 | 1 
2 | 2 
3 | 3 
3 | 3 

クエリ:

select concat('id(', count(type), ')') from T group by id; 

出力:私はのような文字列を取得したい

id(2) 
id(1) 
id(2) 

'id(1)' = 2, 'id(2)' = 1, 'id(3)' = 2

答えて

5

2段階で行う場合。 id(n) = xのレコードを作成してからGROUP_CONCAT()を作成します。

SELECT 
    GROUP_CONCAT(id_count SEPARATOR ', ') 
FROM 
    (SELECT CONCAT('id(', id, ') = ', count(type)) id_count FROM T GROUP BY id) data 

ただし、これは多くの場合、SQLアンチパターンの兆候です。

通常、複数の値を単一の値に圧縮しないことをお勧めします。通常、プレゼンテーションとデータレイヤーは別々にしておくことをお勧めします。

関連する問題