【发布时间】:2013-12-23 00:04:20
【问题描述】:
FQL 很难。确保它返回所有可能的结果是我能想到的最神秘的练习之一。考虑这些查询,它们仅在限制和偏移方面有所不同,以及它们的返回结果:
SELECT caption FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner = me())
AND 0 < created AND created < 1299952078 LIMIT 400 OFFSET 0
返回 400 个结果。好的,很酷。
SELECT caption FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner = me())
AND 0 < created AND created < 1299952078 LIMIT 400 OFFSET 400
返回 0 个结果。嗯,也许我只有 400 张照片。让我们确认一下:
SELECT caption FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner = me())
AND 0 < created AND created < 1299952078 LIMIT 500 OFFSET 0
返回 357 个结果。笏。其他 43 个结果去哪儿了?让我降低限制并翻页:
SELECT caption FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner = me())
AND 0 < created AND created < 1299952078 LIMIT 300 OFFSET 300
返回 0 个结果???哦,来吧。
谁能解释一下?我正在拔头发。
【问题讨论】:
-
我想我看到了一些问题。 FQL 和 YQL 是 SQL 的变体,通常具有相同的语法。在您的示例中,您不需要创建 0 LIMIT 0, 400 (this can be simplified to LIMIT 400) LIMIT 400, 400 LIMIT 0, 500 (or LIMIT 500) LIMIT 300,300 此外,如果您真的想简化查询,请执行
created BETWEEN 0 AND 1299952078但如上所述创建 -
你能否验证内容没有改变(查询之间没有删除)?可能不是,而是一个询问更多信息的问题。
-
谢谢@shawn,我不知道那个限制语法。但是,使用您的建议,结果与以前完全相同。
-
Facebook 开发人员对 FQL 中的
offset有很多问题,因此他们建议使用the “since” and “until” parameters进行类似photos的查询。见developers.facebook.com/blog/post/478 -
@user15 since 和 until 不是照片表的成员。这不是图形 API 问题,这是一个 FQL 问题。
标签: pagination facebook-fql limit offset