6

我试图从 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

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

我目前的解决方案是执行多个查询并执行一个联合,它允许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

4

1 回答 1

0

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

为了澄清你可以ORDER BY在使用多个ISDESCENDANTNODE's 时。

于 2017-03-16T18:59:24.593 回答