LET#
GQL 절 2.18에 추가
작업 중인 레코드에 계산된 값을 더하며, 이미 유효 범위에 있는 컬럼을 버리지 않습니다. Cypher의
WITH *, expr AS v에 대응하는 GQL 표준 절입니다.
개요#
굵게 키워드 · 기울임 직접 채우는 자리 · [ ] 생략 가능 · ... 반복 가능. 구문 표기 규약을 참고하십시오.
설명#
LET은 이미 유효 범위에 있는 변수에 대한 표현식으로 계산한 새 변수 하나 이상을 현재 행에
도입합니다. WITH와 달리 더하기만 합니다. 유효 범위의 모든 바인딩이 자동으로 이어지므로,
LET이 파이프라인에서 변수를 실수로 떨어뜨리는 일은 결코 없습니다.
각 변수는 도입만 됩니다. 이미 유효 범위에 있는 이름은 다시 바인딩할 수 없습니다. 최상위에서와 마찬가지로, 서브쿼리 식의 본문이나 변수를 가져오는
CALL { }의 본문 안에서도 그렇습니다.표현식은 행 단위로 평가되며, 집계 함수는 허용되지 않습니다.
LET은 쿼리를 시작하거나 가운데에 놓일 수 있지만 쿼리를 끝낼 수는 없습니다. 문장을 시작할 때 쓰는 절이 이것입니다. 그 자리의WITH는 SQL의 공통 테이블 표현식이기 때문입니다.
매개변수#
- variable
새 바인딩의 이름입니다. 이미 유효 범위에 있어서는 안 됩니다. 뒤따르는 모든 절에서 보입니다.
- expression
행 단위의 값 표현식이면 무엇이든 됩니다. 속성 접근, 산술, 함수 호출,
CASE, 리스트·맵 생성자가 그렇습니다. 입력 행마다 한 번 평가됩니다.
예제#
이 예제들은 예제 데이터셋에서 실행됩니다.
파생 값을 더하면서 유효 범위를 그대로 두기#
GQL 형태와 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;
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은 더하기만 하므로 문장을 시작할 수 있고, 유효 범위에 아직 아무것도 없는 상태에서 값을 심을 수 있습니다:
LET radius = 7, area = 3.14159 * 7 * 7
RETURN radius, area;
radius | area
--------+-----------
7 | 153.93791
(1 row)
도입만 된다#
이미 유효 범위에 있는 이름은 다시 바인딩할 수 없습니다:
MATCH (p:person) LET p = 1 RETURN p;
ERROR: variable "p" already exists
HINT: LET cannot redefine an existing variable; use a different name.
GQL 적합성
GQL의 LET 문장(ISO/IEC 39075:2024 §14.7)을 구현합니다.
지원 — 변수 정의, 여러 바인딩, 맨 앞 자리, 그리고 행 단위 표현식.
미지원 — 집계 표현식 위의
LET. 진행 상황은 GQL 적합성 표에서 확인하십시오.
참고
LET은 2.18에서 예약 키워드가 됐습니다. 이전 버전에서 let을 레이블 이름이나 변수 이름으로
썼다면 따옴표로 감싸거나("let" — 백틱이 아니라 큰따옴표입니다) 이름을 바꾸십시오. 속성 키와
RETURN 별칭은 영향을 받지 않습니다.