我正试图通过2个标准对朋友进行排序,这些标准首先使用我的应用程序并且与我共享最多的共同朋友。有没有办法按FQL中的2个字段排序?
我找到了使用mutual_friend_count * is_app_user作为排序条件的工作,但它仅适用于app_user = 1,并且不对0的那些人执行排序。
原始查询是:
SELECT uid, name, is_app_user, mutual_friend_count
FROM user
WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND uid != me() ORDER BY (mutual_friend_count * is_app_user) DESC LIMIT 333
图API / FQL资源管理器中的
答案 0 :(得分:2)
我找到了使用mutual_friend_count * is_app_user作为排序条件的工作,但它仅适用于app_user = 1,并且不对0的那些人执行排序。
当然不会,因为f.e. 66 * 0给出与15 * 0相同的排序值。
但假设没有人的共同朋友数大于99999,你可以按is_app_user * 99999 + mutual_friends_count
排序。
这将为app用户提供99999的“基础值”,并获得添加的共同朋友的数量。对于非应用用户,基值仍为0,并且还会添加共同朋友的数量。
因此,应用用户将比非应用用户具有更高的排序值,因此将排名第一 - 考虑添加的mutual_friends_count。非应用用户仍然可以通过他们的mutual_friends_count排名,但仅限于应用用户之后,因为他们的排序值更低。
唯一可能有点棘手的是将+符号放入查询中 - 当通过URL将其传递给Graph API Explorer时,必须将URL编码为%2B,但它不会之后将显示为查询的一部分。但是从结果来看,它似乎仍在使用它来进行查询: