2016-09-13 3 views
0

안녕 난이 SQL 3 개 질문하십시오X as()가 계산 될 때? 약에 가입 왼쪽

1-에 대한 간단한 코드

1. with cte as (
2. select * from TABLE1) 

    3. select * from cte 

TABLE1에서 계산을 선택 *? 먼저 회선 3을 호출 한 다음 회선 1을 누른 다음 회선을 또는 처음 1 + 2를 누른 다음 3?

2- 왼쪽/오른쪽 조인 할 때 null이있는 행이 있습니다.

하지만 행에 "null"대신 null을 삽입 할 수 있습니까? 행의 모든 ​​

그 왼쪽/오른쪽

덕분에 (내가 내부 사용하는 경우 내가이 행이 표시되지 않습니다 가입) 널 (null)을 얻을에 가입하기 때문에!

+0

여기에 무엇을 묻고 있습니까? – Rahul

+0

당신이 묻는 것을 말하기는 조금 어렵지만 일반적으로 "실행 순서는 무엇입니까?" 끔찍한 의미있는 답을 얻지 못한다. SQL은 일 (때로는 많이)을 움직이는 것을 좋아하는 옵티 마이저를 가지고 있습니다. 때로는 테이블이 예상과 다른 곳에서 사용되는 경우가 있습니다. 쿼리가 정말 간단하다면, 예를 들어 CTE가 제거되면 놀라지 않을 것입니다. 아, 그리고 모든 RDBMS도 다릅니다. 그래서 당신의 도움이 될 수도 있습니다. –

답변

1
  1. 실행 순서는 데이터베이스에 달려 있습니다. 실행 순서는 테이블 통계 및 기타 요인에 따라 다릅니다. 나는 두 가지 명령을 모두 보았다.

  2. 값이 NULL이고 0으로 표시하려면 오라클에 NVL을 사용하십시오. NVL(myColumn,0) null이 아닌 경우 myColumn을 반환하고 그렇지 않으면 0을 반환합니다. ISNULL은 SQL Server 및 MySQL 용입니다.

+0

쿼리에서 NVL을 수행 할 수 없습니다. select * from Table1 left join TABLE2 on Table1 .ID = TABLE2 .ID 어떻게 leftjoin이 0인지 아닌지 null을 모두 바꿀 수 있습니까? – TOOMI19876

+0

@ TOOMI19876 'SELECT * from cte'에서 NVL을 할 수 있습니다. 'SELECT id, NVL (column, 0) FROM cte' – GavinCattell