0

我试图获取以下查询以返回我的两个朋友的结果:

SELECT pid, owner
FROM photo
WHERE aid IN (
  SELECT aid
   FROM album
   WHERE owner in (
     SELECT uid2
     FROM friend
     WHERE uid1=me()
     LIMIT 0, 2 ) )

但由于某种原因,它只显示其中一个的结果,并且返回的行数不超过限制(仅约 800)

当我运行时:

SELECT uid2
FROM friend
WHERE uid1=me()
LIMIT 0, 2

正如预期的那样,当我以这种形式手动进行查询时,我得到了两个朋友的结果:

SELECT pid, owner
FROM photo
WHERE aid IN (
  SELECT aid
   FROM album
   WHERE owner = USER_ID_FROM_LAST_QUERY

我得到了两个用户都期望得到的结果,但是为什么它不能与 IN 语句和子查询一起使用?

编辑:我试图实现的是获取我所有朋友的照片。并且仅要求我所有朋友的所有照片将超过 5000 张照片,因此我无法在 1 个查询中获得所有内容。

目前,我通过对每个用户进行查询来获取他的所有图片,从而使其正常工作-并且工作正常。(如果您忽略执行需要 2-3 分钟的事实。所以我想通过减少查询来缩短运行时间。

编辑:更多信息:

通过以下查询,我从两个用户那里获得了专辑:

SELECT aid, owner
FROM album
WHERE owner in (
  SELECT uid2
  FROM friend
  WHERE uid1=me()
  LIMIT 0, 2 ) 

但是通过完整的查询,我只能从其中一位用户拥有的相册中获取图片。

4

1 回答 1

0

尝试这个:

SELECT pid, owner FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner in (SELECT uid2 FROM friend WHERE uid1=me() LIMIT 2) )

于 2012-06-13T09:29:11.067 回答