その中の機能を使用してMySQL GROUP_CONCATに発注
-
21-09-2019 - |
質問
私はGROUP_CONCAT機能で結果を注文したいです。
:問題はGROUP_CONCAT機能における選択は、この(ファンタジーを選択)のように、別の関数であること、ですSELECT a.name,
GROUP_CONCAT(DISTINCT CONCAT_WS(':', b.id, c.name) ORDER BY b.id ASC) AS course
FROM people a, stuff b, courses c
GROUP BY a.id
私のような結果を取得したい(b.id順):
michael 1:science,2:maths,3:physics
私のgetます:
michael 2:maths,1:science,3:physics
私はここに私のGROUP_CONCATにb.idで注文することができますどのように誰を知っていますか?
解決
誰も苦労した場合、私は、少なくとも類似した問題の解決策を見つけたと思う。
http://mahmudahsan.wordpress.com/2008 / 8月27日/ mysqlの--GROUP_CONCAT機能/ の
select GROUP_CONCAT(columnName order by someColumn SEPARATOR '|') from tableName where fieldId = p.id
存在する場合、は順セパレータ前GROUP_CONCATに進みます。
他のヒント
私はこれは本当に古いですけど、ちょうど今、私は答えを探していたと@ kornyの答えは、このために私のアイデアを与えます:
SELECT a.name,
GROUP_CONCAT(DISTINCT CONCAT_WS(':', b.id, c.name)
ORDER BY CONCAT_WS(':', b.id, c.name) ASC) AS course
FROM people a, stuff b, courses c
GROUP BY a.id
(そして、それが明確ではなかった場合、それは、私の作品:-))
私はこれを行うための標準的な方法を知りません。このクエリは動作しますが、私はそれだけでいくつかの実装の詳細に依存怖います:
SELECT a_name, group_concat(b_id)
FROM (
SELECT a.name AS a_name, b.id AS b_id
FROM tbl1 a, tbl2 b
ORDER BY a.name, b.id) a
GROUP BY a_name
副選択の必要はありません。
SELECT people.name, CONCAT_WS(":", stuff.id, courses.name) data
FROM people, stuff, courses
ORDER BY stuff.id, people.name
SELECT pub_id,GROUP_CONCAT(DISTINCT cate_id)
FROM book_mast
GROUP BY pub_id
ORDER BY GROUP_CONCAT(DISTINCT cate_id) ASC;
SELECT generated.name, GROUP_CONCAT(generated.data)
FROM (
SELECT people.name, CONCAST_WS(":", stuff.id, courses.name) data
FROM people, stuff, courses
ORDER BY stuff.id, people.name
) generated
GROUP BY generated.name
所属していません StackOverflow