C# SQL按名称顺序更新类号

C# SQL按名称顺序更新类号,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我不知道我是否为我的问题选择了正确的标题。 我的数据库中有这样的表 NAME class_num -------------------------------------------------- -------- name1 2 name2

我不知道我是否为我的问题选择了正确的标题。 我的数据库中有这样的表

NAME                                               class_num
-------------------------------------------------- --------
name1                                               2
name2                                               4
name3                                               1
我想做的是: 将类_num更新为与名称相同的顺序。我想要的结果是:

    NAME                                            class_num
-------------------------------------------------- ---------
name1                                                1
name2                                                2
name3                                                3
有没有办法通过查询来实现这一点? 还是我需要从C代码开始


对不起,我的英语不好,请帮忙。谢谢。

首先,您可以删除您的查询表

"TRUNCATE TABLE table_name"
"CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);"
稍后,您可以使用该查询再次创建表

"TRUNCATE TABLE table_name"
"CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);"
假设:

  • 您的ID字段不是标识字段,可以更新
  • 您的名称列包含唯一的值(没有重复的名称)
  • 您可以执行以下操作(T-SQL for SQL Server中的示例):


    编辑:看起来你在评论中澄清了你的class_num列是一个键。因此,您必须调整此方法。如果您的ID是连续的,请尝试通过加入行号来更新“Name”。或者,您可以暂时删除键约束,更新ID,然后再次创建键。另一种方法可能是简单地创建一个启用IDENTITY INSERT的新表,并按字母顺序将名称复制到该表中

    在SQL Server中,可以使用可更新的CTE(或子查询):


    你为什么要这样做?id是一个技术值。也许id不是最好的示例,让我更改一下。是否可以假定此表上有一个唯一的主键?或者名称是唯一的?您使用的是什么数据库?您应该适当地标记您的问题。我使用SQL SERVER,主键是ID,但我没有显示在该查询中