mysql을 사용하여 쿼리 결과를 변수에 저장하는 방법


94
SET @v1 := SELECT COUNT(*) FROM user_rating;
SELECT @v1

이 쿼리를 set변수로 실행하면 이 오류가 표시됩니다.

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'SELECT count(*) FROM user_rating' at line 1

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000

(1 row(s) returned)
Execution Time : 00:00:00:343
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:343

답변:


150

괄호로 선택하십시오.

SET @v1 := (SELECT COUNT(*) FROM user_rating);
SELECT @v1;

12
해당 하위 쿼리에 행 1 개와 열 1 개만 포함되어야합니까? 1. #1242 - Subquery returns more than 1 row , 2.#1241 - Operand should contain 1 column(s)
Shafizadeh

1
@RajatGupta : 어디에서 실행하고 있습니까? 그리고 "작동하지 않음"을 정의하십시오.
Sergio Tulentsev

3
@Shafizadeh : 네, 그 하위 쿼리가 하나의 행과 열을 반환해야합니다
세르지오 Tulentsev

1
@Black : 아마도 다른 답변 중 일부가 작동 할 것입니다.
Sergio Tulentsev

2
반환 값은 값 목록이 아니라 1이어야하는 것 같습니다
Victor S

35

또한 하나의 쿼리로 여러 변수를 한 번에 설정하려면 다음과 같은 변수 설정에 다른 구문을 사용할 수 있습니다 SELECT @varname:=value.

실제 예 :

SELECT @total_count:=COUNT(*), @total_price:=SUM(quantity*price) FROM items ...

8

이것을 사용하십시오

 SELECT weight INTO @x FROM p_status where tcount=['value'] LIMIT 1;

테스트되고 잘 작동합니다 ...


[]이 문장에서 대괄호 는 무엇을 의미합니까?
amin

아무것도 그냥 자리 표시 자 []를 건너 뛰고 따옴표에 값을 넣어 없다
아만 마우리

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.