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

XQuery查询异常:按作者和年份筛选无法正确获取对应Price值

解决XQuery中根据作者和年份匹配对应Price的问题

我来帮你搞定这个问题!你当前的查询之所以返回所有Price值,是因为你的条件判断没有精准定位到同一个book节点上——你现在的逻辑是检查<_1>节点下存在任意一本年份为2009的书,并且存在任意一本作者是Vaidyanathan Nagarajan的书,所以整个<_1>节点被选中,自然会返回它下面所有book的Price。

修正方案1:直接遍历目标book节点

把循环对象从/root/*改成/root/*/book,直接针对每一本book做条件判断,符合条件的才返回它的Price:

for $book in /root/*/book
where $book/year='2009' and $book/author='Vaidyanathan Nagarajan'
return fn:data($book/price)

修正方案2:用谓词精准过滤同一book节点

如果还是想保留遍历/root/*的结构,可以在book节点上用谓词同时匹配年份和作者,确保是同一本书:

for $record in /root/*
let $targetBook := $record/book[year='2009' and author='Vaidyanathan Nagarajan']
where exists($targetBook)
return fn:data($targetBook/price)

两种方案运行后都会返回你期望的结果:50,它们的核心都是确保年份和作者的条件同时作用于同一个book节点,而不是分别匹配不同的book。

内容的提问来源于stack exchange,提问作者Anjit Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:51:32