如何在SQL中以随机顺序对行进行排序,并将结果保存到新表中?

问题描述 投票:0回答:1

所以我有一个名为客户的表

                     id  | name
                    ------------
                     1     Tom
                     2     Bob
                     3     Sam
                     4     Angel
                     5     Joe

我想以随机顺序选择'名称'列中的行,并将这些行插入到新表中,我尝试过此操作

       select Name into TestTable from Customer order by NEWID() 
       select * from TestTable

但是它不起作用吗? TestTable中的行与原始表中的行顺序相同。

                         Tom
                         Bob
                         Sam
                         Angel
                         Joe

我尝试执行多次,但每次的结果都是相同的。在随机化发生之前,似乎已将行插入到新表中。有什么想法吗?

sql sql-server random
1个回答
1
投票

表中的行没有排序。它们表示无序集。如果要以随机顺序排列行,则在提取它们时要按顺序排列:

select name
from testtable
order by newid();

或者,您可以添加identity列,该列应保留group by的顺序:

select identity(1, 1) as id, Name
into TestTable
from Customer order by NEWID();

select *
from TestTable
order by id;
© www.soinside.com 2019 - 2024. All rights reserved.