我正在检索数据并将其插入到另一个文件中。但插入的数据是没有顺序的。以下是我想要实现的目标的示例。
let $n := <N>
<n>Lemon</n>
<n>Chickoo</n>
<n>Banana</n>
<n>Orange</n>
<n>Pineapple</n>
<n>Apple</n>
<n>Lemon</n>
<n>Chickoo</n>
<n>Banana</n>
</N>
for $x in distinct-values($n/n)
order by $x
return
insert node <n>{$x}</n> into doc('fruits')/fruit
fruits
的输出如下 -
<fruit>
<n>Lemon</n>
<n>Chickoo</n>
<n>Banana</n>
<n>Orange</n>
<n>Pineapple</n>
<n>Apple</n>
</fruit>
虽然在检索时提到过,但它没有订购......!!!
最佳答案
这是 BaseX 如何评估 order by
FLWOR 子句的错误,该错误现已记录在 GitHub bug tracker 中。 。 return
子句是在排序之前而不是后文进行评估,因此以错误的顺序添加更新。
解决方法是在另一个 FLWOR 表达式中进行排序:
for $x in
for $d in distinct-values($n/n)
order by $d
return $d
order by $x
return
insert node <n>{$x}</n> into doc('fruits')/fruit
另一个(可能更优雅)的解决方案是使用插入节点
,只需评估一次:
insert nodes
for $x in distinct-values($n/n)
order by $x
return <n>{$x}</n>
into doc('fruits')/fruit
关于xml - XQuery 同时获取和插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373044/