我有2张 table :

表 : 电影

MovieID -- Name
1          -- Movie1
2          -- Movie2

表:类型
MovieID -- Type
1          -- DVD
1          -- Bluray
1          -- VCD
2          -- DVD

我需要一个查询来找出这一行:
电影 1 : DVD - 蓝光 - 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

但它返回多板行:
Movies.Name -- DVD -- Bluray -- VCD
Movie1          -- 1     -- 0        -- 0
Movie1          -- 0     -- 1        -- 0
Movie1          -- 0     -- 0        -- 1
Movie2          -- 1     -- 0        -- 0

我想:
Movie1          -- 1     -- 1        -- 1
Movie2          -- 1     -- 0        -- 0

最佳答案

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

关于php - sql - Mysql : Left join on multiple rows and retrieve 1 row,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5681640/

10-11 03:26