1

具体来说,我需要知道查询是否

select * from [some_table]

将始终以相同的顺序返回列。

我没有看到任何迹象表明它是不确定的,但由于我的应用程序的规格,我不能假设这是真的。谁能以一种或另一种方式指出我的文档?我的搜索没有运气。

提前致谢。

4

3 回答 3

0

只要不修改数据库的模式,它就是确定性的。这是一个示例,其中 select * 将更改字段的顺序而不更改表的实际结构:

Create table AAA
( 
   field1 varchar(10),
   field2 varchar(10),
   field3 varchar(10)
);

select *-->field1 ,field2 ,field3

你现在做

alter table AAA drop column field2;
alter table AAA add field2 varchar(10)

select *-->field1 ,field3 , field2

基本上,我不会指望字段的顺序,并且肯定会在 select 子句中指定它们。

于 2013-07-18T19:51:47.813 回答
0
SELECT * FROM [some_table]

在同一 DB 中始终返回相同顺序的列。

注意我假设你有两个数据库 第一个数据库名为 DBA 第二个数据库名为 DBB

在任一数据库中都存在一个表 TRIAL

在 DBA TRIAL 表中,这些字段按以下顺序排列:id、name、surname

在 DBB TRIAL 表中,这些字段按以下顺序排列:id、surname、name

当你执行

SELECT * FROM DBA..TRIAL

你会有身份证,名字,姓氏

DBB 上的相同查询将产生:id、surname、name

于 2013-07-18T18:54:24.773 回答
0

使用 SELECT * 时,列按以下顺序返回:a) 表在 FROM 语句中出现的顺序 b) 列在数据库表中出现的顺序。

来自 MSDN:“列由表或视图返回,如 FROM 子句中指定的那样,并且按照它们在表或视图中的存在顺序。”

http://msdn.microsoft.com/en-us/library/ms176104.aspx

于 2013-07-18T19:03:00.780 回答