[SQL] SQL 서수 위치 표기법을 사용의 장점?
SQLSQL 서수 위치 표기법을 사용의 장점?
서수 위치 표기, AKA 서수는, 열은 SELECT 절에 열 목록에서 열 순서에 따라 속기 대신 열 이름 또는 열 별칭 중 하나의. 일반적으로 ORDER BY 절에서 지원, 일부 데이터베이스 (MySQL은 3.23 이상의, PostgreSQL은 8.0 이상) GROUP BY 절에 대한 구문을 지원뿐만 아니라.
여기에 서수를 사용하는 예는 다음과 같습니다
GROUP BY 1, 2
ORDER BY 1, 2
열 순서 변경, 서수를 업데이트해야하거나 쿼리가 당신이 생각했던 것을 반환하지 않을 경우 - 그것은 쿼리 취성을 만들기 때문에 사용하는 것이 좋지 않다. 그 위치에서 열이 집계 내에서 포장하는 경우 그룹에 의해 사용될 때 매우 가능성이 오류를 얻을 것 ...
은 당신이 (어쨌든 나에게, 서수 사용 논쟁을) 저장 프로 시저 또는 함수를 사용하지 않는 경우, 와이어를 통해 보내 내가 생각할 수있는 데이터를 적게되어 혜택을 누릴 수 있습니다. 저는 누락 된 다른 이점이 있나요?
이 숙제처럼 들릴 수도 있지만, 정말 교육 점심 식사를 위해 매달에 사무실 박았을 연구합니다. 그들은 점심을 지불, 우리는 관심의 작은 주제를 제공해야합니다.
해결법
-
==============================
1.나는 그것을 사용하십시오 :
나는 그것을 사용하십시오 :
더 거꾸로 없습니다.
SQL Server는 어쨌든에 의해 순서대로 지원합니다. 다른 곳이 평가 될 수있는 표현입니다.
-
==============================
2.필드를 얻기 위해이 같은 일을 종종 내가 열이 많은 테이블을 쿼리있을 때 (A PROD 환경 단지 데이터 탐색을위한 임시-땅에서 ... 나는 코드이 결코 것처럼) 나는 걱정하지 가까운 곳에 :
필드를 얻기 위해이 같은 일을 종종 내가 열이 많은 테이블을 쿼리있을 때 (A PROD 환경 단지 데이터 탐색을위한 임시-땅에서 ... 나는 코드이 결코 것처럼) 나는 걱정하지 가까운 곳에 :
select top 1000 Col_1, Col_18, Col_50, Col_117, * from TableWithTonsOfCols order by 1, 4 desc, 3
내가 COL_1, Col_117 내림차순, Col_50에 의해 주문을했다하면 문이 나는 "*"더블 업에 기인하여 순서에 의미 열을 모르는 것 때문에 내 쿼리 발프 것이다. 매우 일반적인,하지만 여전히 유용한 기능하지 않습니다.
-
==============================
3.나를 위해 두 개의 사용 사례는 다음과 같습니다
나를 위해 두 개의 사용 사례는 다음과 같습니다
-
==============================
4.지금은 인라인 뷰를 사용하는 경향이 :
지금은 인라인 뷰를 사용하는 경향이 :
select col_a, count(*) from (select case ...... end col_a from ...) group by col_a order by col_a;
그러나이 유효 구문되기 전에 시대에,이 칼럼의 전체 텍스트를 다시 입력 도움을했다. 까다로운 기능을 사용하면 같은 BY하여 SELECT의 가치와 ORDER 사이의 불일치의 가능성이 있었다
select ltrim(col_name,'0123456789') from table order by ltrim(col_name,'123456789')
당신은 당신이 선택한 항목으로 주문하지 않는 것을 선택 수단에 '0'.
-
==============================
5.나는 쿼리 생성 알고리즘을 -는 SQL 자동 생성됩니다. 서수 수단을 사용하여 다시 필드 이름을 가져올 필요없이 생성 된 필드를 참조 할 수있다. 사용자는 스크린상의 목록에서 선택하여 테이블의 이름 필드를 참조 할 수있다. 언제 까지나 나는 SQL로 목록의 대응을, 나는 역시 SELECT 항목 순서 인 경우, 필드 이름을 알 필요하지 않을 것입니다.
나는 쿼리 생성 알고리즘을 -는 SQL 자동 생성됩니다. 서수 수단을 사용하여 다시 필드 이름을 가져올 필요없이 생성 된 필드를 참조 할 수있다. 사용자는 스크린상의 목록에서 선택하여 테이블의 이름 필드를 참조 할 수있다. 언제 까지나 나는 SQL로 목록의 대응을, 나는 역시 SELECT 항목 순서 인 경우, 필드 이름을 알 필요하지 않을 것입니다.
메모리이 1970 년대 후반에 SQL 표준에로 사용 말한다
-
==============================
6.내가 올바르게 기억, 당신이 설명처럼 서수의 사용은 SQL Server의 이후 릴리스에서 마이크로 소프트에 의해 사용되지 않습니다. 나는 이것에 틀릴 수도 있지만, 나는 그런 경우라고 생각한다. 난 항상 덜 입력을 포함하기 때문에 어떤 경우에 그들을 사용 좋아했습니다 때 기름 한 쿼리를 포함하는 파생 열 당신이있는 거 거래.
내가 올바르게 기억, 당신이 설명처럼 서수의 사용은 SQL Server의 이후 릴리스에서 마이크로 소프트에 의해 사용되지 않습니다. 나는 이것에 틀릴 수도 있지만, 나는 그런 경우라고 생각한다. 난 항상 덜 입력을 포함하기 때문에 어떤 경우에 그들을 사용 좋아했습니다 때 기름 한 쿼리를 포함하는 파생 열 당신이있는 거 거래.
from https://stackoverflow.com/questions/2253040/benefits-of-using-sql-ordinal-position-notation by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] LINQ의 String 비교를하는 문제 (0) | 2020.05.11 |
---|---|
[SQL] 엔티티 프레임 워크 - 제 사용량 속성 (0) | 2020.05.11 |
[SQL] C #을 사용하여 SQL 데이터베이스에 날짜 시간 값을 삽입 (0) | 2020.05.11 |
[SQL] 저장 프로 시저의 반환 값을 얻는 방법 (0) | 2020.05.11 |
[SQL] SQL Server의 지연 가능 제약 (0) | 2020.05.11 |