如何复制表,但相对于其中一列随机化行



有人知道在SQL中将记录插入另一个表时如何混淆数据顺序吗?

示例:我有两个表,Table ATable B,我想插入从Table ATable B的记录,当插入到Table B时,我希望这些记录如何混合?按照表A中的顺序插入。在SQL中可以做到吗?

Table A:
ID     Postcode    Total
1      3000        10
2      3000        20
3      3000        5 
4      3001        10
5      3001        6
6      3002        6
7      3002        9
8      3002        10
9      3003        85
10     3004        1

插入Table B后(记录随机混合):

ID     Postcode    Total
1      3001        10
2      3002        20
3      3000        5 
4      3003        85
5      3002        6
6      3001        6
7      3002        9
8      3000        20
9      3000        10
10     3004        1

可以:

INSERT INTO TableB
    SELECT *
    FROM (SELECT TOP 10 * FROM TableA ORDER BY NEWID()) AS tmp

请确保表B没有聚集键,否则它将无法工作。将TOP 10更改为TableA中的行数。

编辑:一位评论者指出,原始版本在SQLServer2012及更高版本中不起作用。在这种情况下,你需要一个更严厉的版本(更新)。

最新更新