0

私が望んでいるのは、クエリ内のテーブルから文字列を作成して、作成の別のクエリにその文字列を配置できるようにすることです。たとえば、私はテーブルにこれを持っています:

index | position   | name
----------------------------------------
1     | member     | John Smith
2     | chair      | Mary Jones
3     | member     | Mary Jones
4     | contact    | Grace Adams
5     | director   | Grace Adams
6     | member     | Grace Adams
7     | treasurer  | Bill McDonnell
8     | vice chair | Bill McDonnell
9     | member     | Ishmael Rodriguez

私は次のように結果を探しています:

name               | positions
----------------------------------------
John Smith         | member
Mary Jones         | chair,member
Grace Adams        | contact,director,member
Bill McDonnell     | treasurer,vice chair
Ishmael Rodriguez  | member

このように、 CONCAT_WS() のいくつかのバリアントを使用して結果を取得できることを望んでいました...

SELECT
a.NAME,
CONCAT_WS(
    ',',
    (
        SELECT
            position
        FROM
            TABLE
        WHERE
            NAME = a.NAME
    )
)AS positions FROM ---------------

明らかに、これは私にとってはうまくいきません。何か案は?

4

2 に答える 2

4

GROUP_CONCATを使用する[ドキュメント]

SELECT name, GROUP_CONCAT(position) result
FROM tableName
GROUP BY name
ORDER BY `index`
于 2012-11-01T14:55:35.350 に答える
1

GROUP_CONCAT次のように使用します。

SELECT name, GROUP_CONCAT(position SEPARATOR ',')
FROM Table
GROUP BY name
于 2012-11-01T14:55:57.510 に答える