【发布时间】:2017-05-27 14:26:15
【问题描述】:
我有一张表,我需要对其进行区分,因为它有一些重复项,然后需要对其进行排序并将 XML 加入一列。
这是我尝试过的:
Select *
From TableA
Where TableID ='1234'
And Convert(nvarchar(max), xmlcolumn) in (Select Distinct Convert(nvarchar(max), xmlcolumn))
上面确实为我整理了列表,也没有删除重复项。
Select distinct convert (nvarchar(max), xmlcolumn)
From TableA
Where TableID ='1234'
Order By TableID
上面返回了所需的内容,但是如果我按(如上所示)进行订购,则会出现错误:
如果指定了选择地区,则必须按项目排序
我不想在 select 语句中输入 TableID,因为我不想在结果中出现这个。其次,如何将 XML(转换为 nvarchar 以执行不同的操作)转换回 XML 以导出到 C#。
【问题讨论】:
-
为什么还需要
Order by TableIdTableId = '1234' -
该表包含大量数据,我可以使用 TableID 选择这些数据。例如,SO 表 ID 1234包含 600 个条目,我需要提取 XMLcolumn
-
Order by不会更改您采用的行数。它只是按指定的列列表对结果集进行排序。错误信息很清楚,如果您使用distinct关键字,那么order by子句中的所有列必须存在于您选择的列中。在您的情况下,只需删除Order by TableId或将其更改为Order by anyselectedcolumn -
我需要按结果中不需要的列排序。例如。列 A、XML 列、列 B。现在列 a 有一个数字 1234,其行分别由 COlumn B 和 XML 列共享。现在我需要通过 1234 进行选择,因为我可以看到重复项。然后对 XML 列进行排序并导出到 C#。我只能按 ColumnA 或 ColumnB 订购 XML。但我不需要结果中的这些列。我希望我足够清楚
-
有人可以删除否决票吗?这是一个有效的问题
标签: c# sql sql-server xml