, 그것은 하위 쿼리로 values
를 사용하여 "문자"테이블 지정할 수있다 : 그러나어떻게 CTE에서 "리터럴"테이블을 간결하게 지정할 수 있습니까? MS SQL Server 2008 및 새로운에서
select * from (
values (1,2),
(3,4)
) as foo(bar,baz)
을, 나는 with
절에이 지정하는 합리적인 방법을 생각하지 않은 (CTE).
:
with foo(bar,baz) as (
values (1,2),
(3,4)
)
select * from foo;
이 다른 형태 이 작동합니까 CTE를에 리터럴 테이블을 지정하는 더 간결한 방법은 SQL 서버에, 거기에
with foo as (
select * from (
values (1,2),
(3,4)
) as foo(bar, baz)
)
select * from foo;
:하지만 과도하게 중복 및 오류가 발생하기 쉬운 것 같습니다?
아니요 CTE에 좋은 방법이 없습니다. 그 불필요한 SELECT는 나를 귀찮게한다! –
그것은 모든 RDBMS의 꽤 표준이고 꽤 표준입니다. 사람들은 항상 SQL에서 더 간결함을 원했던 것처럼 보입니다. 그러나보다 명확한 것은 종종 더 나은 결과를 산출하는 매우 자세한 언어입니다. – JNevill
사실입니다. 나는 PostgreSQL에 의해 실제로 이런 명백한 것들을 쉽게 만들려고 노력합니다. :/ –