【问题标题】:How to use order by with multiple isdescendantnode如何通过多个 isdescendantnode 使用 order by
【发布时间】:2017-03-15 21:38:52
【问题描述】:

我正在尝试从 jcr 的不同区域抓取多个相同类型的节点,并按日期对它们进行排序。

SELECT * FROM [social:asiResource] 
WHERE [sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
(ISDESCENDANTNODE([/path/to/content]) OR 
ISDESCENDANTNODE([/path/to/content]))
ORDER BY [cq:lastModified] DESC

这将返回正确的结果集,但顺序不正确。事实上,将DESC 更改为ASC 不会以任何方式改变结果。

我目前的解决方案是执行多个查询并执行联合,以允许 ORDER BY 正常运行。

SELECT * FROM [social:asiResource] 
WHERE [sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
ISDESCENDANTNODE([/path/to/content]) 
UNION 
SELECT * FROM [social:asiResource] WHERE 
[sling:resourceType] = 'social/qna/components/hbs/topic' AND 
[isFeatured_b] = true AND 
NOT CONTAINS([cq:tags],'administrative:blacklist') AND 
ISDESCENDANTNODE([/path/to/content])
ORDER BY [cq:lastModified] DESC

不幸的是,我正在搜索大约 30 个节点,使后一个查询无法使用。有没有办法在不使用UNION 的情况下使用ORDER BY

【问题讨论】:

    标签: aem jcr jcr-sql2


    【解决方案1】:

    初始查询现在正在运行。似乎还有其他一些因素导致ORDER BY 没有给出有效的结果。

    为了澄清你可以在使用多个ISDESCENDANTNODEORDER BY

    【讨论】:

    • 另外NOT CONTAINS 似乎会减慢查询速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多