如何将表格的行按升序排列并同时保存表格?

2024-03-30

我想通过按现有表的升序排列行来创建一个新表。我尝试使用的代码是:

SELECT * 
   INTO new_table
FROM existing_table
ORDER BY col1, col2

但是,新表不显示行的任何升序排列。谁能告诉我这段代码有什么问题吗?


表中的行are无序,因此谈论行是否有序是没有意义的。并且,查询的结果集是无序的,除非您使用order by clause.

也就是说,以有序方式将行放入表中可以获得相同的效果。这里有一个方法。

select top 0 *
into new_table
from existing_table;

alter table new_table add new_table_id int identity(1, 1);

insert into new_table(<list of columns without new_table_id>)
    SELECT <list of columns without new_table_id>
    INTO new_table
    FROM existing_table
    ORDER BY col1, col2;

id 列保证顺序正确。实际上,似乎行将按顺序插入。严格来说,尽管 id 的值排序正确,但不能保证插入顺序。

正如评论中提到的,您还可以执行以下操作:

alter table new_table add new_table_id int identity(1, 1) not null primary key;

您可以这样做,因为表是空的。作为主键,数据应该按顺序插入。

不过,作为一个注释。查询:

select *
from new_table;

不保证结果的顺序。表中的插入顺序没有区别。您不能仅仅因为行是按特定顺序排序的,就依赖结果的特定顺序。例如,在多线程环境中,结果一般不会无论是在理论上还是在实践中都是有序的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将表格的行按升序排列并同时保存表格? 的相关文章

随机推荐