例如,表格t1
包含列c1
& c2
,select * from t1
是否有可能返回元组(c2, c1)
而不是(c1, c2)
?
select * from (select * from t1)
是否有可能返回元组(c2, c1)
而不是(c1, c2)
?
答案 0 :(得分:1)
除非删除列并重新添加,否则它将始终返回相同的列。然后它会出现在最后。为了安全起见,我会列出列而不是使用select *
答案 1 :(得分:1)
在一个简单的例子中,从一个表中选择它应该是一致的。 当from包含多个表时,它可能会更复杂。
在Oracle的以下“NATURAL JOIN”示例中,第一列是两个表共有的列,后面是连接中指定的第一个表中的列(常见的除外),然后是来自第二张桌子的那些。
您可以进入更复杂的情况,其中表中有多个公共列,每个表中的顺序不同,并且源中使用了两个以上的表....
create table tab_a
(id number(2,0) primary key,
value_a varchar2(20));
create table tab_b
(value_b varchar2(20),
id number(2,0) primary key
);
insert into tab_a values (10,'blue');
insert into tab_a values (20,'red');
insert into tab_b values ('square',10);
insert into tab_b values ('oval',20);
select * from tab_b natural join tab_a
ID VALUE_B VALUE_A
10.00 square blue
20.00 oval red
PS。编辑添加 - 自然连接语法是一个愚蠢的想法,不应该在实践中使用。这就是原因之一。更一般地说,如果将审计样式列添加到表(例如CREATED_BY),则会混淆SQL。