例如,表t1
有列c1
& c2
,是有任何機會,select * from t1
返回元組(c2, c1)
代替(c1, c2)
?請問select *總是返回相同的列順序嗎?
是否有任何機會select * from (select * from t1)
返回元組(c2, c1)
而不是(c1, c2)
?
例如,表t1
有列c1
& c2
,是有任何機會,select * from t1
返回元組(c2, c1)
代替(c1, c2)
?請問select *總是返回相同的列順序嗎?
是否有任何機會select * from (select * from t1)
返回元組(c2, c1)
而不是(c1, c2)
?
它會一直返回相同的列,除非您刪除一列並重新添加它。然後它會出現在最後。爲了安全起見,我將列出列而不是使用select *
謝謝,有沒有官方文件證實這一點? – Leon
https://community.oracle.com/thread/2556464?start=0&tstart=0 –
在一個簡單的情況下,從一個表中選擇,它應該是一致的。 當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混淆。
從來沒有。這些值按照它們在'SELECT'中指定的順序返回。使用'*',它基於表的定義。 –