【发布时间】: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?
【问题讨论】: