我有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/