具体来说,我需要知道查询是否
select * from [some_table]
将始终以相同的顺序返回列。
我没有看到任何迹象表明它是不确定的,但由于我的应用程序的规格,我不能假设这是真的。谁能以一种或另一种方式指出我的文档?我的搜索没有运气。
提前致谢。
具体来说,我需要知道查询是否
select * from [some_table]
将始终以相同的顺序返回列。
我没有看到任何迹象表明它是不确定的,但由于我的应用程序的规格,我不能假设这是真的。谁能以一种或另一种方式指出我的文档?我的搜索没有运气。
提前致谢。
只要不修改数据库的模式,它就是确定性的。这是一个示例,其中 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 子句中指定它们。
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
使用 SELECT * 时,列按以下顺序返回:a) 表在 FROM 语句中出现的顺序 b) 列在数据库表中出现的顺序。
来自 MSDN:“列由表或视图返回,如 FROM 子句中指定的那样,并且按照它们在表或视图中的存在顺序。”