我试图从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
的情况下使用UNION
?
答案 0 :(得分:0)
初始查询现在正在运行。似乎有一些其他因素导致ORDER BY
没有给出有效的结果。
为了澄清您在使用多个ORDER BY
时可以ISDESCENDANTNODE
。