从一个表中为每个非唯一ID中的最后20个条目从一个id列表中选择,所有这些都在一个查询中

时间:2015-01-14 17:16:43

标签: parse-platform pfquery

我有一个消息表,其结构为

objectId | groupId | senderId |消息

这是一个包含来自我所有应用程序组的所有邮件的表。我如何执行查询以便获取每个组ID的最后20条消息?

示例

objectId | groupId | senderId |消息

1234 | 1 | 234 | "你好"!

1235 | 1 | 123 | "你好!#34;

1236 | 2 | 456 | "测试"

1237 | 3 | 678 | "洛尔"

我想为第1组和第2组提取最后20条消息。如何在单个查询中执行此操作?可以吗?

1 个答案:

答案 0 :(得分:1)

我认为你应该可以用"或"查询。

我对类名和列类型做了一些猜测。请根据需要编辑这些值以匹配您的实际数据结构。

试试这个:

- (void)runQuery {
    PFQuery *query1 = [PFQuery queryWithClassName:@"message"];
    [query1 addDescendingOrder:@"createdAt"];
    [query1 whereKey:@"groupId" equalTo:@(1)];
    query1.limit    = 20;

    PFQuery *query2 = [PFQuery queryWithClassName:@"message"];
    [query2 addDescendingOrder:@"createdAt"];
    [query2 whereKey:@"groupId" equalTo:@(2)];
    query2.limit    = 20;

    PFQuery *both   = [PFQuery orQueryWithSubqueries:@[query1, query2]];
    [both findObjectsInBackgroundWithBlock:^(NSArray *messages, NSError *error) {
        // You should have up to 40 message items,
        // up to 20 from each query

    }
     ];
}