You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XQuery统计XML文档中不重复的作者数量?

问题分析与解决方案

原查询的问题在于:distinct-values(doc('biblio.xml')//author/(first, last)) 会将每个作者的名(first)和姓(last)拆分为独立的字符串,统计的是不重复的名字片段数量,而非完整的不重复作者数量。比如W.和Stevens会被算作两个独立值,导致结果远大于实际的不重复作者数。

正确查询方案

方案1:拼接全名作为唯一标识(通用兼容)

let $all-authors := doc('biblio.xml')//author
let $unique-full-names := distinct-values($all-authors/(concat(first, ' ', last)))
return count($unique-full-names)
  • 逻辑:先获取所有<author>节点,将每个作者的名和姓拼接为完整姓名字符串,再通过distinct-values去重,最后统计去重后的数量。
  • 结果:返回4(对应W. Stevens、Serge Abiteboul、Peter Buneman、Dan Suciu四位不重复作者)。

方案2:使用distinct-nodes(XQuery 3.0+支持)

如果你的XQuery处理器支持3.0及以上版本,可以直接基于节点内容去重:

let $all-authors := doc('biblio.xml')//author
let $unique-authors := distinct-nodes($all-authors, function($a) { concat($a/first, ' ', $a/last) })
return count($unique-authors)
  • 逻辑:通过distinct-nodes的自定义键函数,以作者全名作为判断重复的依据,直接对<author>节点去重后统计数量。

内容的提问来源于stack exchange,提问作者الجبل العالي

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:07:40