2013-02-19 3 views
1

SQL 쿼리에서 반환되는 열의 순서를 결정하는 것이 궁금합니다. 예를 들어SQL 쿼리에서 반환 된 열의 순서

, SELECT * FROM SOMETABLE;

SQ_ID |BUS_TYPE |VOIP  |LOCAL_PHONE 
--------|-----------|---------|------------- 
SQ000001|Business |Y  |N 

내가 속성 COLUMN_ID을 추측하고이 결정됩니다. 테이블 조인의 경우, 예를 들어, SELECT * FROM SOMETABLE LEFT JOIN OTHERTABLE USING (SOME_COL);은 이제 순서가 결정됩니다.

SELECT SOME_COL, SOME_OTHER_COL 
FROM SOMETABLE LEFT JOIN OTHERTABLE USING (SOME_COL) 

을하지만 당신은 또한 순서에 영향을 미치는 ID의 및 일반의 주문 이야기 :

+1

특정 열 순서를 원할 경우 ** ** it! 'SELECT VOIP, SQ_ID, LOCAL_PHONE, BUS_TYPE FROM ..... ' –

+0

@marc_s 감사합니다. 오라클이 조인에서 열의 자연 순서를 결정하는 방법에 대해 질문을 받고 있습니다. –

+0

엄지 손가락 규칙 : 순서가 지정되지 않은 경우 순서를 임의로 간주하십시오. – Rene

답변

1

당신은 선택 문에서 colums의 순서를 나열 할 수 있습니다. 그래서 당신은 또한 행을 주문 ORDER BY를 찾고있을 수 있다고 생각 :이 경우에 매우 유용 온다 무엇

SELECT * 
FROM SOMETABLE LEFT JOIN OTHERTABLE USING (SOME_COL) 
ORDER BY SOME_COL 

별명의 사용이다. 두 테이블이 같은 이름을 가진 coloums이 Especally 때

SELECT s.some_col, o.some_col 
FROM SOMETABLE s LEFT JOIN OTHERTABLE o ON(o.id = s.id) 
ORDER BY o.SOME_COL 

을 별칭을 사용할 때이 더 intuive 찾을 수 있기 때문에 나는 ON이 ​​경우 JOIN 구문을 사용하지만 그것은 또한 사용하여 작동합니다.

2

SELECT * FROM some_table의 열 순서는 USER_TAB_COLUMNS에 표시된대로 각 열의 column_id에 의해 결정됩니다.

SELECT * FROM some_table JOIN other_table의 열 순서는 FROM 절 다음의 가장 왼쪽 테이블부터 시작하여 각 테이블의 모든 열입니다. 즉, 이것은 ...

SELECT * FROM some_table JOIN other_table 

는 ... 내부 조인 또는 RIGHT 투영 변경되지 JOIN 왼쪽 조인 변경 ...

SELECT some_table.*, other_table.* FROM some_table JOIN other_table 

이 동일하다.


이것은 물론 이론적입니다. 프로덕션 코드에는 select *을 절대로 사용하지 않아야합니다. 결합시 테이블 별명이있는 명시 적 컬럼 선언은 항상 더 안전합니다. 의도를보다 잘 표현한 것 외에도 명시 적 예측은 LOB 열 또는 조인 된 테이블의 열을 모호하게 만드는 열 이름을 추가하는 것과 같이 테이블에 대한 향후 변경에서 코드를 보호합니다.

관련 문제