我想在2012年获得最喜欢的朋友照片。我做了以下查询。
SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified, like_info
FROM photo WHERE created > 1325356200 and aid
IN (SELECT aid FROM album WHERE owner
IN (SELECT uid2 FROM friend WHERE uid1=me()))
ORDER BY like_info.like_count DESC LIMIT 30
它按照降序给我最喜欢的30张照片。但是当我检查照片时,我可以理解列表不正确。我朋友的一些最喜欢的照片不在列表中。我多次检查过这个问题。我无法理解这个查询有什么问题。任何人都可以帮我找出为什么这个查询没有给出所需的结果? 任何建议都是最受欢迎的。
答案 0 :(得分:3)
问题是由于每个FQL查询的默认LIMIT值(LIMIT 100)。
首先 SELECT uid2 FROM friend WHERE uid1 = me()查询运行并输出您的100位朋友
其次 SELECT辅助FROM专辑WHERE所有者IN(..100朋友......)查询运行并输出您100位朋友的s100专辑。
最后选择 pid,标题,辅助,所有者,链接,src_big,src_small,创建,修改,like_info FROM照片WHERE创建> 1325356200和援助IN(... 100 Aid ...)ORDER BY like_info.like_count DESC LIMIT 30 查询运行并输出100张专辑的结果。
显然结果根本不是你想要的。您可能会尝试自己增加限制(比如LIMIT 1000),但它从来没有对我有用。获得准确结果的唯一方法是尝试图形API,但执行需要很长时间,最终它是一个死的选择。
我的回答证明
尝试运行这些代码
SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified, like_info
FROM photo WHERE created > 1325356200 and aid IN (SELECT aid FROM album WHERE owner IN
(SELECT uid2 FROM friend WHERE uid1=me() order by rand() ))ORDER BY like_info DESC LIMIT 30
我使用rand()函数随机化朋友
SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified, like_info FROM
photo WHERE created > 1325356200 and aid IN (SELECT aid FROM album WHERE owner IN (SELECT
uid2 FROM friend WHERE uid1=me() ) order by rand() ) ORDER BY like_info DESC LIMIT 30
这里我使用rand()来随机化相册。您可以尝试随机化两个查询。每当你执行这些代码时,它会产生非常不同的结果,你会发现还有更多的照片有更多的喜欢。