我试图从 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 个节点,使后一个查询无法使用。有ORDER BY
没有不使用 a的方法来使用UNION
?