Sql Count(*)单个查询中每个id的相关项数

时间:2015-01-02 06:10:59

标签: php mysql sql count

老实说,我不知道究竟要放在标题中的内容,但问题出现了:

我有桌子(movie_actor)指的是与他们有关的演员和电影。类似的东西:

AID | MID
AC01 | MV1
AC02 | MV1
AC01 | MV2
AC02 | MV3
AC01 | MV3

所以我已经提出了如何通过这个SQL查询获取与MV1相关的所有电影:

SELECT movie_actor.MID
FROM movie_actor
WHERE AID
IN ( SELECT AID FROM movie_actor WHERE IN MID = "MV1") AND movie_actor.MID<>"MV1"

会导致:

MID: MV2, MV3

现在我真正希望得到的是与MV1相关的电影及其相应的相关电影数量。基本上是:

MID | Number of Related Movies
MV2 | 2 (MV1, MV3)
MV3 | 2 (MV1, MV2)

现在我可以使用count(*)和前面提到的查询来获取它。

SELECT COUNT(*)
FROM movie_actor
WHERE AID
IN (
SELECT AID
FROM movie_actor
WHERE MID="MV2")

但我必须单独这样做,我可以取消PHP(尝试过,速度很慢,数据量很大)。是否可以在一个查询中执行此操作?

如果我能够做到这一点,它会更快,因为反对在PHP中这样做吗?

抱歉,如果我有奇怪的格式,这里新的:) 还原谅了高通

1 个答案:

答案 0 :(得分:0)

SELECT movie_actor.MID FROM movie_actor WHERE AID IN ( SELECT AID FROM movie_actor WHERE IN MID = "MV1") group by MID