sql - Mysql:在多行上左连接并检索1行

Ham*_*mid 5 php mysql sql join left-join

我有2张桌子:

表:电影

MovieID -- Name
1          -- Movie1
2          -- Movie2
Run Code Online (Sandbox Code Playgroud)

表:类型

MovieID -- Type
1          -- DVD
1          -- Bluray
1          -- VCD
2          -- DVD
Run Code Online (Sandbox Code Playgroud)

我需要一个查询来查找这一行:Movie1:DVD - Bluray - VCD

我用了:

SELECT Movies.Name,
IF(TYPE = 'DVD', 1, 0 ) AS DVD,
IF(TYPE = 'Bluray', 1, 0 ) AS Bluray,
IF(TYPE = 'VCD', 1, 0 ) AS VCD
FROM Movies LEFT JOIN Types ON Movies.MovieID = Types.MovieID
Run Code Online (Sandbox Code Playgroud)

但它返回多板线:

Movies.Name -- DVD -- Bluray -- VCD
Movie1          -- 1     -- 0        -- 0
Movie1          -- 0     -- 1        -- 0
Movie1          -- 0     -- 0        -- 1
Movie2          -- 1     -- 0        -- 0
Run Code Online (Sandbox Code Playgroud)

我想要:

Movie1          -- 1     -- 1        -- 1
Movie2          -- 1     -- 0        -- 0
Run Code Online (Sandbox Code Playgroud)

Pas*_*TIN 10

这个group_concat()功能可能会起作用.


没有经过测试,但我认为这样的事情应该有效:

SELECT Movies.Name,
    group_concat(type separator ' - ') as type
FROM Movies 
    LEFT JOIN Types ON Movies.MovieID = Types.MovieID
group by Movies.Name
Run Code Online (Sandbox Code Playgroud)