{#let-let} # LET {bdg-primary-line}`GQL 절` {bdg-secondary-line}`2.18에 추가` 작업 중인 레코드에 계산된 값을 더하며, 이미 유효 범위에 있는 컬럼을 버리지 않습니다. Cypher의 `WITH *, expr AS v`에 대응하는 GQL 표준 절입니다. {#let-synopsis} ## 개요
LET variable = expression [, variable = expression ] ...

굵게 키워드 · 기울임 직접 채우는 자리 · [ ] 생략 가능 · ... 반복 가능. 구문 표기 규약을 참고하십시오.

{#let-description} ## 설명 `LET`은 이미 유효 범위에 있는 변수에 대한 표현식으로 계산한 새 변수 하나 이상을 현재 행에 도입합니다. `WITH`와 달리 **더하기만 합니다**. 유효 범위의 모든 바인딩이 자동으로 이어지므로, `LET`이 파이프라인에서 변수를 실수로 떨어뜨리는 일은 결코 없습니다. - 각 변수는 **도입만 됩니다.** 이미 유효 범위에 있는 이름은 다시 바인딩할 수 없습니다. 최상위에서와 마찬가지로, 서브쿼리 식의 본문이나 변수를 가져오는 `CALL { }`의 본문 안에서도 그렇습니다. - 표현식은 **행 단위로** 평가되며, 집계 함수는 허용되지 않습니다. - `LET`은 쿼리를 **시작**하거나 가운데에 놓일 수 있지만 쿼리를 끝낼 수는 없습니다. 문장을 시작할 때 쓰는 절이 이것입니다. 그 자리의 [`WITH`](with.md)는 SQL의 공통 테이블 표현식이기 때문입니다. {#let-parameters} ## 매개변수 variable : 새 바인딩의 이름입니다. 이미 유효 범위에 있어서는 안 됩니다. 뒤따르는 모든 절에서 보입니다. expression : 행 단위의 값 표현식이면 무엇이든 됩니다. 속성 접근, 산술, 함수 호출, `CASE`, 리스트·맵 생성자가 그렇습니다. 입력 행마다 한 번 평가됩니다. {#let-examples} ## 예제 이 예제들은 [예제 데이터셋](../../get_started/example-dataset.md)에서 실행됩니다. {#let-add-a-derived-value-and-keep-everything-in-scope} ### 파생 값을 더하면서 유효 범위를 그대로 두기 GQL 형태와 Cypher 형태는 같습니다. 탭을 바꿔 비교해 보십시오: ::::{tab-set} :::{tab-item} GQL — LET ```cypher MATCH (p:person) LET age_in_2026 = 2026 - p.born RETURN p.name AS name, age_in_2026 ORDER BY age_in_2026 LIMIT 3; ``` ::: :::{tab-item} Cypher — WITH ```cypher MATCH (p:person) WITH *, 2026 - p.born AS age_in_2026 RETURN p.name AS name, age_in_2026 ORDER BY age_in_2026 LIMIT 3; ``` ::: :::: ``` name | age_in_2026 -------------------+------------- "Ryan Gosling" | 46 "Neill Blomkamp" | 47 "Sam Worthington" | 50 (3 rows) ``` 차이는 `p`에 무슨 일이 일어나는가입니다. `LET`은 그것을 자동으로 이어 줍니다. `WITH` 형태는 `*`로 그것을 달라고 해야 하고, `*`를 잊은 `WITH`는 `p`를 떨어뜨리므로 그다음 `RETURN`이 실패합니다. {#let-lead-a-query-with-computed-values} ### 계산된 값으로 쿼리를 시작하기 `LET`은 더하기만 하므로 문장을 시작할 수 있고, 유효 범위에 아직 아무것도 없는 상태에서 값을 심을 수 있습니다: ```cypher LET radius = 7, area = 3.14159 * 7 * 7 RETURN radius, area; ``` ``` radius | area --------+----------- 7 | 153.93791 (1 row) ``` {#let-introduce-only} ### 도입만 된다 이미 유효 범위에 있는 이름은 다시 바인딩할 수 없습니다: ```cypher MATCH (p:person) LET p = 1 RETURN p; ``` ``` ERROR: variable "p" already exists HINT: LET cannot redefine an existing variable; use a different name. ``` ```{admonition} GQL 적합성 :class: gql-conformance GQL의 *LET 문장*(ISO/IEC 39075:2024 §14.7)을 구현합니다. - **지원** — 변수 정의, 여러 바인딩, 맨 앞 자리, 그리고 행 단위 표현식. - **미지원** — 집계 표현식 위의 `LET`. 진행 상황은 [GQL 적합성 표](../../appendix/gql-conformance.md)에서 확인하십시오. ``` ```{note} `LET`은 2.18에서 **예약 키워드**가 됐습니다. 이전 버전에서 `let`을 레이블 이름이나 변수 이름으로 썼다면 따옴표로 감싸거나(`"let"` — 백틱이 아니라 큰따옴표입니다) 이름을 바꾸십시오. 속성 키와 `RETURN` 별칭은 영향을 받지 않습니다. ``` {#let-see-also} ## 관련 항목 - [`WITH`](with.md) — Cypher의 대응 절 - [`NEXT`](next.md) {bdg-secondary-line}`GQL` - [`RETURN`](return.md) - [GQL 적합성 표](../../appendix/gql-conformance.md)