当前位置: 代码迷 >> Sql Server >> XML 中的xquery 怎么选出TOP10
  详细解决方案

XML 中的xquery 怎么选出TOP10

热度:73   发布时间:2016-04-24 18:53:14.0
请教高手XML 中的xquery 如何选出TOP10?
如何在XML查询中实现像这样的东西?
SELECT top(10) [Ratingid]
      ,[rating]
      ,[maxrating]
      ,[rating_percent]
  FROM [LkMusicDB].[dbo].[Rating]
  order by rating desc


-----------------------?
我的xml数据是这样的

<root>
  <Rating>
    <Ratingid>0</Ratingid>
    <rating>0.77</rating>
    <maxrating>0.41</maxrating>
    <rating_percent>39</rating_percent>
  </Rating>
  <Rating>
    <Ratingid>1</Ratingid>
    <rating>0.33</rating>
    <maxrating>0.37</maxrating>
    <rating_percent>60</rating_percent>
  </Rating>
  <Rating>
    <Ratingid>2</Ratingid>
    <rating>0.84</rating>
    <maxrating>0.94</maxrating>
    <rating_percent>16</rating_percent>
  </Rating>
  <Rating>
    <Ratingid>3</Ratingid>
    <rating>0.66</rating>
    <maxrating>0.73</maxrating>
    <rating_percent>55</rating_percent>
  </Rating>
  <Rating>
    <Ratingid>4</Ratingid>
    <rating>0.27</rating>
    <maxrating>0.60</maxrating>
    <rating_percent>42</rating_percent>
  </Rating>
  <Rating>
    <Ratingid>5</Ratingid>
    <rating>0.12</rating>
    <maxrating>0.99</maxrating>
    <rating_percent>34</rating_percent>
  </Rating></root>




------解决方案--------------------
你参考一下吧:
/*
sql xml 入门:
    --by jinjazz
    --http://blog.csdn.net/jinjazz
    
    1、xml:        能认识元素、属性和值
    
    2、xpath:    寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁)
                
                语法格式,这些语法可以组合为条件:
                "."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代,
                "name"表示按名字查找,"@name"表示按属性查找
                
                "集合[条件]" 表示根据条件取集合的子集,条件可以是
                    数  值:数字,last(),last()-数字 等
                    布尔值:position()<数字,@name='条件',name='条件'
                条件是布尔值的时候可以合并计算:and or
    
    3、xquery:    基于xpath标的准查询语言,sqlserver xquery包含如下函数
                exist(xpath条件):返回布尔值表示节点是否存在
                query(xpath条件):返回由符合条件的节点组成的新的xml文档
                value(xpath条件,数据类型):返回指定的标量值,xpath条件结果必须唯一
                nodes(xpath条件): 返回由符合条件的节点组成的一行一列的结果表
*/

declare @data xml
set @data='
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>
<book category="CHILDREN">
  <title lang="jp">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>
<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>