如何在MySQL中将子查询行的结果显示为一列?

SIA*_*SIA 6 mysql pivot

我有三个表分类,电影和RelCatMov

分类表

    categoryid, categoryName
1            thriller
2            supsense
3            romantic
4            action
5            sci-fi
Run Code Online (Sandbox Code Playgroud)

电影表

movieid, movieName
1            Avataar
2            Titanic
3            NinjaAssassin
Run Code Online (Sandbox Code Playgroud)

RelCatMov表

categoryid, MovieID
1            1
2            2
3            2
4            2
5            2
Run Code Online (Sandbox Code Playgroud)

现在我想显示一条记录

MovieName     Categories
Titanic    Suspense,Romantic,Sci-fi,action
Run Code Online (Sandbox Code Playgroud)

这该怎么做.

我正在写一个查询

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!!!
Run Code Online (Sandbox Code Playgroud)

如何在一列中显示行的结果?

请帮忙!!!

Jos*_*tey 11

在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;
Run Code Online (Sandbox Code Playgroud)

作为参考,您的问题是MySQL希望您返回单个值,而您将返回多行.