2

我在jackrabbit-users list 上问过这个问题,但没有得到答案。

JCR-SQL2 不提供 SELECT DISTINCT(或类似的 AFAIK)。JCR 1.0 中的 SQL 或 XPATH 也不...人们如何解决这个问题?删除重复行的最佳方法是什么?

我读到有人正在迭代结果并将它们放入一个集合中。就我而言,由于可能产生大量结果,这种方法最终可能成本太高。

这里有人有建议吗?

4

1 回答 1

2

JCR 1.0(例如,JSR-170)或 JCR 2.0(例如,JSR-283)中定义的查询语言都没有SELECT DISTINCT.

这样做的唯一方法是手动处理结果并丢弃您已经看到的任何行(或节点)。使用一组路径或节点对象会起作用。这并不太难,但不幸的是,它比应该的要难,而且,正如您所提到的,如果有很多行和/或重复项,可能会很昂贵。

这就是为什么ModeShape提供对 JCR-SQL2 查询的完全支持,但也允许使用SELECT DISTINCT. 事实上,ModeShape 支持许多其他功能,例如

  • WHERE子句中不相关的子查询
  • LIMIT nOFFSET m
  • UNION,INTERSECTEXCEPT
  • FULL OUTER JOINCROSS JOIN
  • BETWEEN标准
  • 设置标准,使用INNOT IN
  • DEPTHPATH动态操作数

和其他一些人。有关详细信息,请参阅文档

于 2011-03-04T16:18:16.623 回答