我有三个表分类,电影和RelCatMov
分类表
categoryid, categoryName
1 thriller
2 supsense
3 romantic
4 action
5 sci-fi
影表
movieid, movieName
1 Avataar
2 Titanic
3 NinjaAssassin
RelCatMov表
categoryid, MovieID
1 1
2 2
3 2
4 2
5 2
现在我想将记录显示为
MovieName Categories
Titanic Suspense,Romantic,Sci-fi,action
如何做到这一点。
我正在撰写查询
select MovieName,(select categoryname from category b,relcatmov c where b.categoryid=c.categoryid and c.movieid=a.movieid) as categories from movies a;
Error: Subquery returns more than one row!!!
如何在一列中显示行的结果?
请帮助!!!
答案 0 :(得分:12)
在Oracle中,它被称为stragg。在MySQL中它是GROUP_CONCAT。
select MovieName,(select GROUP_CONCAT(categoryname) from category b,relcatmov c where b.categoryid=c.categoryid and c.movieid=a.movieid) as categories from movies a;
作为参考,您的问题是MySQL希望您返回单个值而不是返回几行。
答案 1 :(得分:-2)
对于MS-SQL中的类似需求,我编写了一个函数,它返回一个连接列表(字符串)。所以你可以遵循这种方法。