LET#

GQL 절 2.18에 추가

작업 중인 레코드에 계산된 값을 더하며, 이미 유효 범위에 있는 컬럼을 버리지 않습니다. Cypher의 WITH *, expr AS v에 대응하는 GQL 표준 절입니다.

개요#

LET variable = expression [, variable = expression ] ...

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

설명#

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 별칭은 영향을 받지 않습니다.

관련 항목#