【发布时间】:2015-12-28 22:11:42
【问题描述】:
在我看到的所有SUBQUERY 示例中,总是使用@count,例如,
SUBQUERY(employees, $e, $e.lastName == "Smith").@count > 0
所以我有三个非常相关的问题,最好作为一个 StackOverflow 问题:
- 如果没有
@count,SUBQUERY有什么用吗?如果是这样,我还没有找到。 - 可以将任何其他聚合与
SUBQUERY一起使用吗?如果是这样,我无法让他们工作。 (见下文。) -
SUBQUERY究竟返回了什么?合乎逻辑的事情似乎是第一个参数类型的过滤集合。 (我在这里说的是概念性的。显然 SQL 会有所不同,因为 SQL 调试非常清楚地表明了这一点。)
这给出了一个例外,就像我尝试过的除 @count 之外的所有其他聚合一样,这似乎表明无法使用其他聚合:
SUBQUERY(employees, $e, $e.lastName == "Smith").@avg.salary > 75000
(让我们暂时搁置这是否是表达这种事情的最佳方式。问题是关于SUBQUERY,不是关于如何最好地制定查询。)
Mundi 有用地指出SUBQUERY 的另一个用途是嵌套子查询。是的,我知道它们并使用过它们,但这个问题实际上是关于SUBQUERY 的结果。如果我们将SUBQUERY 视为一个函数,那么除了@count 之外,它的结果是什么以及它可以以什么方式使用?
更新
感谢 Mundi 的研究,似乎 @avg 之类的聚合实际上可以与 SUBQUERY 一起使用,尤其是与 filteredArrayUsingPredicate: 之类的内存过滤器一起使用时,但在底层数据存储为 @ 时不适用于 Core Data 987654338@.
【问题讨论】:
标签: core-data nspredicate