appengine相当于“NOT IN”查询

时间:2010-12-10 01:53:08

标签: google-app-engine

我是从关系数据库背景来到Appengine,正在考虑如何最好地完成这项任务。

基本上我有一个对象表,想要检索一个用户从未见过的对。

在mysql中,例如最直接的可能是

SELECT * 
FROM object_pairs
WHERE id NOT IN(
    SELECT object_pair_id
    FROM user_object_pairs
    WHERE user_id = :user_id
)

理想情况下,我也希望能够从可能的结果中检索随机(或半随机)对。

任何建议表示赞赏。

由于

1 个答案:

答案 0 :(得分:1)

没有简单的方法可以做到这一点。您建议的SQL查询将由大多数SQL数据库执行,首先构建内存中的ID列表,然后对表执行线性扫描,仅返回不在ID列表中的行。您可以在App Engine中执行相同的操作:获取用户的“查看列表”,对所有实体执行查询,并跳过他之前看到的那些实体。