我有一个消息表,其结构为
objectId | groupId | senderId |消息
这是一个包含来自我所有应用程序组的所有邮件的表。我如何执行查询以便获取每个组ID的最后20条消息?
示例
objectId | groupId | senderId |消息
1234 | 1 | 234 | "你好"!
1235 | 1 | 123 | "你好!#34;
1236 | 2 | 456 | "测试"
1237 | 3 | 678 | "洛尔"
我想为第1组和第2组提取最后20条消息。如何在单个查询中执行此操作?可以吗?
答案 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
}
];
}