如何按字母顺序对SQL Server 2014 Management Studio中的表记录进行排序?

如何按字母顺序对SQL Server 2014 Management Studio中的表记录进行排序?,sql,sql-server,Sql,Sql Server,我在一个表中有许多记录: 1 dog 2 cat 3 lion 我想按以下字母顺序重新创建表或对数据排序: 1 cat 2 dog 3 lion 表1 Id int Unchecked name nvarchar(50) Checked 要从表中创建另一个表,请执行以下操作: CREATE TABLE T1 ( ID INT IDENTITY PRIMARY KEY NOT NULL, NAME NVARCHAR(50) NOT NULL

我在一个表中有许多记录:

1 dog
2 cat 
3 lion
我想按以下字母顺序重新创建表或对数据排序:

1 cat
2 dog
3 lion
表1

Id      int             Unchecked
name    nvarchar(50)    Checked

要从表中创建另一个表,请执行以下操作:

CREATE TABLE T1 
( ID INT IDENTITY PRIMARY KEY NOT NULL,
NAME NVARCHAR(50) NOT NULL
)
GO

INSERT INTO T1 VALUES ('Dog'),('Cat'),('Lion');

SELECT ROW_NUMBER ()OVER (ORDER BY NAME ASC) ID, NAME INTO T2 FROM T1 ORDER BY NAME ASC;

要从表中创建另一个表,请执行以下操作:

CREATE TABLE T1 
( ID INT IDENTITY PRIMARY KEY NOT NULL,
NAME NVARCHAR(50) NOT NULL
)
GO

INSERT INTO T1 VALUES ('Dog'),('Cat'),('Lion');

SELECT ROW_NUMBER ()OVER (ORDER BY NAME ASC) ID, NAME INTO T2 FROM T1 ORDER BY NAME ASC;

在数据库中,记录插入表时的顺序不一定决定查询时返回记录的顺序。集群密钥的顺序也不相同。在某些情况下,您似乎总是获得相同的结果顺序,但这并不能保证,并且可能随时发生变化

如果查询的结果必须是特定的顺序,则必须在查询中使用
orderby
子句指定该顺序(
orderby[Name]ASC


根据你以上的评论,我理解你不希望这是答案。但这就是SQL Server(和任何其他关系数据库)的工作方式。如果顺序很重要,您可以指定在从系统查询数据时,而不是在向其中插入数据时。

在数据库中,插入到表中的记录顺序不一定决定查询时返回记录的顺序。集群密钥的顺序也不相同。在某些情况下,您似乎总是获得相同的结果顺序,但这并不能保证,并且可能随时发生变化

如果查询的结果必须是特定的顺序,则必须在查询中使用
orderby
子句指定该顺序(
orderby[Name]ASC


根据你以上的评论,我理解你不希望这是答案。但这就是SQL Server(和任何其他关系数据库)的工作方式。如果顺序很重要,您可以在从系统查询数据时指定,而不是在向其中插入数据时指定。

如果您只想对表数据进行排序,请使用
order by

Select * from table_1 order by Name 
如果要根据字母顺序更改Id,请创建一个新表,并按顺序将记录移动到新表中

SELECT   RANK() OVER (ORDER BY name ) AS Id, name
INTO   newTable
FROM   table_1

如果只想对表格数据进行排序,请使用
orderby

Select * from table_1 order by Name 
如果要根据字母顺序更改Id,请创建一个新表,并按顺序将记录移动到新表中

SELECT   RANK() OVER (ORDER BY name ) AS Id, name
INTO   newTable
FROM   table_1


提示:
orderbyname
。从tblname-orderbyname-ASC中选择name;我想重新创建一个表,而不是临时创建。然后,除非确实限制了记录,否则您需要另一个表。当这个表获得一个新记录时,是否需要重新洗牌以更正数字列?您所要求的没有意义。您为什么要这样做?提示:
按名称排序
。从tblname order by name ASC中选择名称;我想重新创建一个表,而不是临时创建。然后,除非确实限制了记录,否则您需要另一个表。当这个表获得一个新记录时,是否需要重新洗牌以更正数字列?你所要求的没有意义。你为什么要这样做?请向海报解释这个代码在做什么,以及为什么它回答了他的问题。纯代码的答案并不是很有教育意义。@alroc希望SO上的所有用户都能说出你所说的,但是。。。不,有一些。谢谢,但它只适用于三列,不是很多列,也不是字母顺序。@nasr你是什么意思?我回答你的问题请向海报解释此代码的作用以及它为什么回答他的问题。纯代码的答案并不是很有教育意义。@alroc希望SO上的所有用户都能说出你所说的,但是。。。不,有一些。谢谢,但它只适用于三列,不是很多列,也不是字母顺序。@nasr你是什么意思?我回答您的问题否,我想重新创建如Sami answer这样的表,但需要1000个数据。是的,第二个查询将重新创建该表。谢谢!最后是一个简短、简单、有效的解决方案。之后只需删除Id,您就可以了。:-)不,我想重新创建像Sami answer这样的表,但是对于1000个数据。是的,第二个查询会重新创建该表。谢谢!最后是一个简短、简单、有效的解决方案。之后只需删除Id,您就可以了。:-)不,我想重新创建像Sami answer这样的表,但是对于1000个数据。@nasr,我是说这样做没有意义,因为以特定顺序获得查询输出的唯一方法是使用order by。不,我想重新创建像Sami answer这样的表,但是对于1000个数据,@nasr,我的意思是这样做没有意义,因为获得特定顺序的查询输出的唯一方法是使用orderby。