0
String sqlStr = "SELECT *,"
              +"(SELECT group_concat(gGenre) FROM spmovy_genre_table a,spmovy_genre b WHERE mID=mID "
              +"AND a.gID=b.gID group by mID) Genre "
              +"FROM spmovy_movie where mTitle "
              + "like ?";

我有一个表填充电影标题,由带有 gID 的外键类型表连接,1. 带有电影标题和 mID 的表,然后是带有 mgID、mID、gID 的第二个表,以与带有 gID 和 gGenre 的第三个表链接

4

1 回答 1

1

除了关于您的查询的一般评论(学习join语法和使用描述性别名)之外,您的查询的问题在于:

mID = mID

在不完全相关的子查询中。

您正在尝试获得一组类型。但是查询为每个组返回一个。在 a selectwithin aselect中,您不能有多个值。

您打算为此关联子查询,但事实并非如此。为此,您需要表别名。这是我对正确版本的猜测:

SELECT *,
       (SELECT group_concat(gGenre)
        FROM spmovy_genre_table a join
             spmovy_genre b
             on a.gID=b.gID
        WHERE spmovy_movie.mID=b.mID
       ) Genre
FROM spmovy_movie
where mTitle like ?

匹配可能是 toa.mID而不是 to b.mID

我还删除了该group by子句,因为不再需要了。

于 2013-05-17T15:40:43.837 回答