0

私は次のクエリを取得して、2人の友人の結果を返すようにしています。

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 ) )

しかし、何らかの理由で、そのうちの1つの結果のみが表示され、返される行数は制限を超えていません(約800のみ)

私が走るとき:

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

予想どおり、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 ) 

しかし、完全なクエリでは、それらのユーザーの1人が所有するアルバムからのみ写真を取得します。

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 に答える