12.3.4 할당 연산자
표 12.5 할당 연산자
이름 | 설명 |
---|---|
= | ( SET 문의 일부 또는 UPDATE 문 SET 절의 일부로서) 값을 할당합니다 |
:= | 값을 할당합니다 |
:=
할당 연산자. 연산자의 왼쪽에있는 사용자 변수가 오른쪽에있는 값에 대입됩니다. 오른쪽의 값은 리터럴 값, 값을 포함하는 다른 변수 또는 쿼리의 결과를 포함한 스칼라 값을 생성하는 임의의 유효한 식 (값이 스칼라 값의 경우) 일 가능성이 있습니다. 같은
SET
문에서 여러 임무를 수행 할 수 있습니다. 같은 문에서 여러 임무를 수행 할 수 있습니다.=
와 달리:=
연산자는 비교 연산자로 해석되지 않습니다. 즉, (SET
문뿐만 아니라) 유효한 SQL 문:=
를 사용하면 변수에 값을 할당 할 수 있습니다.mysql>
SELECT @var1, @var2;
-> NULL, NULL mysql>SELECT @var1 := 1, @var2;
-> 1, NULL mysql>SELECT @var1, @var2;
-> 1, NULL mysql>SELECT @var1, @var2 := @var1;
-> 1 1 mysql>SELECT @var1, @var2;
-> 1 1 mysql>SELECT @var1:=COUNT(*) FROM t1;
-> 4 mysql>SELECT @var1;
-> 4다음과 같이
SELECT
이외의 문 (UPDATE
등)하지만:=
를 사용하여 값을 할당 할 수 있습니다.mysql>
SELECT @var1;
-> 4 mysql>SELECT * FROM t1;
-> 1, 3, 5, 7 mysql>UPDATE t1 SET c1 = 2 WHERE c1 = @var1:= 1;
Query OK, 1 row affected (0.00 sec) Rows matched : 1 Changed : 1 Warnings : 0 mysql>SELECT @var1;
-> 1 mysql>SELECT * FROM t1;
-> 2, 3, 5, 7:=
연산자를 사용하면 단일 SQL 문에서 같은 변수 값 설정 및 읽기를 모두 할 수 있지만 이것은 권장되지 않습니다. 섹션 9.4 "사용자 정의 변수" 에서는이 문제를 해결해야 이유에 대해 설명되어 있습니다.=
이 연산자는 두 개의 절에서 설명하는 두 가지 경우에 값 할당을 수행하는 데 사용됩니다.
SET
문은=
연산자의 왼쪽에있는 사용자 변수를 오른쪽에있는 값에 대입 할당 연산자로 처리됩니다. (즉,SET
문에서 사용되면=
는:=
처럼 처리됩니다.) 오른쪽의 값은 리터럴 값, 값을 포함하는 다른 변수 또는 쿼리의 결과를 포함한 스칼라 값을 생성하는 임의의 유효한 식 (값이 스칼라 값의 경우) 일 가능성이 있습니다. 같은SET
문에서 여러 임무를 수행 할 수 있습니다.UPDATE
문SET
절은=
은 할당 연산자 역할도합니다. 그러나이 경우UPDATE
의 일부인WHERE
조건에 일치하는 경우, 연산자의 왼쪽에 지정된 컬럼이 오른쪽에 지정된 값으로 간주됩니다.UPDATE
문 같은SET
절에서 여러 임무를 수행 할 수 있습니다.다른 맥락에서,
=
는 비교 연산자 로 처리됩니다.mysql>
SELECT @var1, @var2;
-> NULL, NULL mysql>SELECT @var1 := 1, @var2;
-> 1, NULL mysql>SELECT @var1, @var2;
-> 1, NULL mysql>SELECT @var1, @var2 := @var1;
-> 1 1 mysql>SELECT @var1, @var2;
-> 1 1자세한 내용은 섹션 13.7.4 "SET 구문" , 섹션 13.2.11 "UPDATE 구문" 및 섹션 13.2.10 "서브 쿼리 구문" 을 참조하십시오.