gpt4 book ai didi

sql - SELECT * INTO 保留 SQL Server 2008 中的 ORDER BY 但不保留 2012

转载 作者:行者123 更新时间:2023-12-04 02:42:10 30 4
gpt4 key购买 nike

2008年和2012年分别执行以下SQL,2008年执行时,返回的结果是正确的排序顺序。 2012 年不保留排序顺序。

这是一个已知的变化吗? 2012 年是否有保留排序顺序的解决方法?

CREATE TABLE #MyTable(Name VARCHAR(50), SortOrder INT)
INSERT INTO #MyTable SELECT 'b', 2 UNION ALL SELECT 'c', 3 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'd', 4

SELECT * INTO #Result FROM #MyTable ORDER BY SortOrder

SELECT * FROM #Result

DROP TABLE #MyTable
DROP TABLE #Result

最佳答案

如何使用 select * from #result 判断表格内的顺序是什么?无法保证 select 中的顺序询问。

但是,SQL Fiddle 上的结果不同。如果要保证结果一样,那就加一个主键。然后保证插入顺序:

CREATE TABLE MyTable(Name VARCHAR(50), SortOrder INT)
INSERT INTO MyTable SELECT 'b', 2 UNION ALL SELECT 'c', 3 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'd', 4


select top 0 * into result from MyTable;

alter table Result add id int identity(1, 1) primary key;

insert into Result(name, sortorder)
SELECT * FROM MyTable
ORDER BY SortOrder;

我还是讨厌做 select * from Result在这之后。但是是的,它确实在 SQL Server 2008 和 2012 中以正确的顺序返回它们。不仅如此,而且因为 SQL Server 保证以正确的顺序插入主键,甚至可以保证记录以正确的顺序在这个案例。

但 。 . .仅仅因为记录在页面上按特定顺序排列并不意味着它们将按该顺序检索而没有 order by条款。

关于sql - SELECT * INTO 保留 SQL Server 2008 中的 ORDER BY 但不保留 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16655565/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com