有谁知道如何通过特定的列值将表中的记录插入另一个表顺序?
例如:
我有下表:
表A:
record_id int,
name varchar(100),
nickname(100),
chain_id int (PK),
chain_n int,
count int,
create_date datetime
tableB的:
record_id int,
name varchar(100),
nickname(100),
chain_id int (PK),
chain_n int,
create_date datetime
我对tableA有以下值:
record_id name nickname chain_id chain_n count create_date
1 Test One 1 1 2 2013-06-06
2 Test Two 2 1 5 2013-06-06
3 Test Three 3 1 3 2013-06-06
我使用以下脚本将数据插入thableB
INSERT INTO tableB
(
record_id,
name,
nickname,
chain_id,
chain_n,
create_date
)
SELECT
(
record_id,
name,
nickname,
chain_id,
chain_n,
create_date
)
FROM tableA
ORDER BY count DESC
我希望数据会像以下一样插入到tableB中:
record_id name nickname chain_id chain_n create_date
2 Test Two 2 1 2013-06-06
3 Test Three 3 1 2013-06-06
1 Test One 1 1 2013-06-06
但是,结果仍然是由chain_id
按顺序排列record_id name nickname chain_id chain_n create_date
1 Test One 1 1 2013-06-06
2 Test Two 2 1 2013-06-06
3 Test Three 3 1 2013-06-06
有没有人知道如何通过计数来设置插入记录顺序
答案 0 :(得分:3)
似乎record_id是您的主键,因此默认排序由此完成。这就是你的输出与tableA相同的原因。只需在tableB的SELECT子句中使用ORDER BY。
答案 1 :(得分:2)
按特定顺序将记录插入表中对我来说没有多大意义,因为ORDER BY实际上并不会影响数据写入驱动器的方式。所有记录都将按聚集索引的顺序插入。在任何情况下,如果要查询某些字段排序的表中的数据,即使您希望按聚簇索引列排序数据,也应在ORDER BY子句中明确说明它。虽然默认情况下所有数据都是按聚簇索引排序的,但如果您没有在ORDER BY子句中明确指定它,则仍需要SQL Server引擎来定义最佳执行计划并在需要时更改顺序。