1

メンバー名のみを指定して、グループとそのメンバーのリストを (1 回だけ) 表示したいと思います。

テーブル a:

| GROUP_ID |   NAME |
---------------------
|        1 |    Tom |
|        2 |  Frank |
|        3 | Shilla |
|        1 | Scully |
|        3 | Scully |
|        3 | Scully |
|        3 | Scully |
|        4 | Scully |
|        1 |    Jen |

テーブル_b:

| ID | GROUP_NAME |
-------------------
|  1 |   Troopers |
|  2 |      Clubs |
|  3 |  Mavericks |
|  4 |   Tomatoes |

SQLFidlleは次のとおり
です。結果は次のとおりです。

| GROUP_NAME |        GROUP_CONCAT(C.NAME) |
--------------------------------------------
|  Mavericks | Scully,Scully,Scully,Shilla |
|   Tomatoes |                      Scully |
|   Troopers |              Scully,Jen,Tom |

私が手に入れたいのは

| GROUP_NAME | GROUP_CONCAT(C.NAME) |
-------------------------------------
|  Mavericks | Scully,Shilla        |
|   Tomatoes | Scully               |
|   Troopers | Scully,Jen,Tom       |

クエリを変更するにはどうすればよいですか?

4

3 に答える 3

3

追加するだけDISTINCT

SELECT  b.GROUP_NAME, GROUP_CONCAT(DISTINCT c.Name)
FROM    
        (
            SELECT GROUP_ID
            FROM   table_a
            WHERE  name = 'Scully'
            GROUP BY table_a.GROUP_ID
        ) a 
        INNER JOIN table_b b
            ON a.GROUP_ID = b.ID
        INNER JOIN table_a c
            ON a.GROUP_ID = c.GROUP_ID
GROUP BY b.GROUP_NAME;
于 2013-01-21T12:41:32.717 に答える
2

DISTINCT を GROUP_CONCAT に追加するだけです。MySQL のドキュメントを参照してください

... GROUP_CONCAT(DISTINCT C.NAME) ...
于 2013-01-21T12:41:44.277 に答える
0

このクエリを試してください

SELECT 
    * 
FROM table_b as b
LEFT JOIN (
    SELECT 
          GROUP_CONCAT(DISTINCT NAME) as Names,
          GROUP_ID
    FROM Table_a 
    GROUP BY GROUP_ID
) as a ON a.GROUP_ID = b.ID

SQLフィドル

于 2013-01-21T12:43:23.200 に答える