select 来自 table 的最后 20 个条目,对于 ID 列表中的每个非唯一 ID,全部在一个查询中

select last 20 entries from a table for each non unique id from a list of ids, all in one query

我有一条消息 table 具有休闲结构

objectId |群组编号 |发件人编号 |留言

这是一个 table,其中包含来自我的所有应用组的所有消息。我如何执行查询以便为每个组 ID 数组获取最后 20 条消息?

示例

objectId |群组编号 |发件人编号 |留言

1234 | 1 | 234 | "hello!"

1235 | 1 | 123 | "hello to you too!"

1236 | 2 | 456 | "test"

1237 | 3 |第678章"lol"

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

我认为您应该可以使用 "or" 查询来完成此操作。

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

试试这个:

- (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

    }
     ];
}