MySQL : 쿼리 결과에서 사용자 변수 설정


195

MySQL의 쿼리 결과를 기반으로 사용자 변수를 설정할 수 있습니까?

내가 달성하고자하는 것은 이런 일이 (우리 둘 것을 가정 할 수있다 USERGROUP고유) :

set @user = 123456;
set @group = select GROUP from USER where User = @user;
select * from USER where GROUP = @group;

가능하다는 것을 알고 있지만 중첩 된 쿼리 로이 작업을 수행하고 싶지 않습니다.

답변:


330

예, 그러나 변수 할당을 쿼리로 이동해야합니다.

SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;

테스트 사례 :

CREATE TABLE user (`user` int, `group` int);
INSERT INTO user VALUES (123456, 5);
INSERT INTO user VALUES (111111, 5);

결과:

SET @user := 123456;
SELECT @group := `group` FROM user WHERE user = @user;
SELECT * FROM user WHERE `group` = @group;

+--------+-------+
| user   | group |
+--------+-------+
| 123456 |     5 |
| 111111 |     5 |
+--------+-------+
2 rows in set (0.00 sec)

에 대한 것을 참고 SET, 하나 =또는 :=할당 연산자로 사용할 수 있습니다. 그러나 다른 명령문 내에서 지정 연산자는 SET가 아닌 명령문에서 비교 연산자로 취급 되기 때문에 :=그렇지 않아야 합니다.==


최신 정보:

아래의 의견 외에도 다음을 수행 할 수도 있습니다.

SET @user := 123456;
SELECT `group` FROM user LIMIT 1 INTO @group; 
SELECT * FROM user WHERE `group` = @group;

3
Btw, 첫 번째 명령문의 출력을 (단지 변수 할당으로) 억제하고 두 번째 쿼리의 출력 만 표시 할 수 있습니까?
Avada Kedavra

3
@ Avada : 변수 할당에 대한 결과를 출력하지 않는 대안으로 내 대답을 업데이트했습니다.
Daniel Vassallo

1
@DanielVassallo도 있습니다 select grop into @group from user limit 1.
Pacerier

@DanielVassallo 감사합니다. "INTO"라는 문구는 매우 유용합니다. 선택을 반환하지 않고 select에서 mysql var를 설정하려고했습니다. 감사!
루이스 안토니오 페스타 나

68

쿼리 주위에 괄호를 추가하십시오.

set @user = 123456;
set @group = (select GROUP from USER where User = @user);
select * from USER where GROUP = @group;

결과적으로 Subquery returns more than 1 row나를 위해
timbroder

1
@timbroder 쿼리에 LIMIT 1을 추가하십시오. 어쨌든, 나는 그것을 수정하기 위해 편집을 제안했다.
Youkko

11

먼저 mysql에서 변수를 정의하는 방법을 살펴 보겠습니다.

mysql에서 varible을 정의하려면 @ {variable_name}과 같은 '@'로 시작하고이 '{variable_name}'과 같이 변수 이름으로 바꿀 수 있습니다.

이제 mysql에서 변수에 값을 할당하는 방법. 이를 위해 우리는 그것을 할 많은 방법이 있습니다

  1. 키워드 'SET'사용

예 :-mysql> SET @a = 1;

  1. 키워드 'SET'을 사용하지 않고 ': ='을 (를) 사용하지 않습니다.

예 :-mysql> @a : = 1;

  1. 'SELECT'문을 사용합니다.

예 :-mysql> @를 1로 선택;

여기서 @a는 사용자 정의 변수이고 1은 @a에 할당됩니다.

이제 @ {variable_name}의 값을 얻거나 선택하는 방법.

우리는 다음과 같은 select 문을 사용할 수 있습니다

예 :-

mysql> @a를 선택하십시오;

출력을 표시하고 @a의 값을 표시합니다.

이제 변수의 테이블에서 값을 할당하는 방법.

이를 위해 다음과 같은 두 가지 문장을 사용할 수 있습니다.

  1. @a : = (emp_id = 1 인 직원에서 emp_name을 선택하십시오);

  2. 직원에서 emp_name을 @a로 선택하십시오 (여기서 emp_id = 1).

emp_name은 항상 단일 값을 반환해야합니다. 그렇지 않으면이 유형 명령문에서 오류가 발생합니다.

이것을 참조하십시오 :-http: //www.easysolutionweb.com/sql-pl-sql/how-to-assign-a-value-in-a-variable-in-mysql


7

저장 프로 시저 를 실행하는 동안 결과가 표시되지 않도록이 방법을 사용하십시오 .

쿼리 :

SELECT a.strUserID FROM tblUsers a WHERE a.lngUserID = lngUserID LIMIT 1 INTO @strUserID;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.