当前位置: 首页 > 面试题库 >

如何在GROUP BY子句中添加XML数据类型?

颜华池
2023-03-14
问题内容

我正在创建一个论坛,所以我创建了一个包含帖子的表格。字段之一是Body类型的with
XML。现在,我想创建一个查询,该查询返回所有帖子以及每个帖子的子代数量。我正在使用聚合函数来执行此操作。我在使用汇总函数时需要使用group
by。当我使用中的字段时group by,会出现以下异常:

除非使用IS NULL运算符,否则无法比较或排序XML数据类型。

我该如何解决?

我的查询是:

SELECT 
    Post.PostId, Post.[Body], Count(Children.PostId)
FROM  
    dbo.Post Post, 
    dbo.Post Children 
WHERE
    Children.ParentId = Post.PostId
GROUP BY
    Post.PostId, 
    Post.[Body]

问题答案:

您可以在CTE中进行汇总,然后加入该汇总中

WITH Children(Cnt, ParentId)
     AS (SELECT COUNT(*),
                ParentId
         FROM   dbo.Post
         GROUP  BY ParentId)
SELECT P.PostId,
       P.[Body],
       ISNULL(Cnt, 0) AS Cnt
FROM   dbo.Post P
       LEFT JOIN Children /*To include childless posts*/
         ON Children.ParentId = P.PostId
ORDER  BY P.PostId


 类似资料:
  • 问题内容: 这不起作用: 任何想法如何通过id将插入范围缩小到特定行? 问题答案: 在插入语句中,您将没有现有行来执行操作?您要插入新行,是否意味着要执行更新语句?

  • 如何将数据添加到xml文件中,并在其上附加其他数据(如果存在)? 我尝试了以下代码,但这段代码只创建了一个值节点,没有附加到文件中。它总是删除现有的,然后添加新的。

  • 我试图在用户ID下添加新的用户数据,但它将旧数据替换为新数据,并添加另一个“users”和“user\u account\u settings”。 这是我的实时数据库:在此处输入图像描述 我的实时数据库必须是这样的:添加新的用户数据而不将旧数据替换为新数据,也不添加“用户”和“user_account_settings”。 这就是我想要的数据库结构示例:在此处输入图像描述 这是用于添加新用户的代码

  • 问题内容: 如何在Oracle数据库的CLOB中包含的xml中添加属性?我可以使用UpdateXML函数来更新现有属性,但不会添加一个。 问题答案: 你可以使用一个组合与沿任,或删除现有的节点,然后用现在包括新的属性重新添加回来。

  • 我目前正在Netbeans中使用sl4fj和log4j2编写一个小型的Maven Java应用程序。在生产环境中部署java属性时,我无法使用它。因此,我希望log4j2在我的项目中搜索并找到属性文件。我在谷歌上搜索了一下,并尝试了以下选项,但运气不佳; 更改了项目属性->Actions->Run project中的类路径,以包含xml文件 我还能尝试其他选择吗?它是一个maven项目,所以我不能

  • 问题内容: 我有这样的查询- 由于将rowz = 1放入查询中,因此该查询无法正常工作?如果我只想要在嵌套后rowz = 1的结果该怎么办。 当我这样做时- 从news_article中选择unnest(string_to_array(na.news_category_id,’,’)):: int rowz; 我的桌子是- 然后它给了我这个结果- 问题答案: 这回答了您的问题: 诀窍是将数组放入一