>데이터 베이스 >MySQL 튜토리얼 >SQL SELECT 문 내에서 변수를 안전하게 정의하고 사용하려면 어떻게 해야 합니까?

SQL SELECT 문 내에서 변수를 안전하게 정의하고 사용하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-02 03:56:12317검색

How Can I Safely Define and Use a Variable Within a SQL SELECT Statement?

Select 문 내에서 변수 정의 및 사용

SQL에서는 일반적으로 사용자 변수에 값을 할당하고 동일한 select 문 내에서 사용하세요. MySQL 문서에는 그러한 표현식의 평가 순서가 정의되지 않았으며 명령문 요소 및 서버 릴리스에 따라 달라질 수 있다고 명시되어 있습니다.

이 점을 설명하기 위해 다음 쿼리를 고려하십시오.

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;

이 쿼리에서는 두 번째 열이 @z 값에 2를 곱한 값을 반환할 것으로 예상합니다. 그러나 평가 순서가 보장되지 않으므로 MySQL은 NULL을 반환할 수 있습니다. 이 동작은 아래와 같이 사용자 변수 대신 저장 프로시저를 사용하는 것과 다릅니다.

SELECT 
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;

이 경우 변수 할당 전에 저장 프로시저 호출이 평가되기 때문에 예상한 결과를 얻습니다.

이 문제를 해결하고 select 문 내에서 변수를 정의하려면 하위 쿼리를 사용할 수 있습니다.

select @z, @z*2
from (SELECT @z:=sum(item)
      FROM TableA
     ) t;

이 접근 방식을 사용하면 변수 할당이 발생합니다. 외부 쿼리에 사용되기 전입니다.

위 내용은 SQL SELECT 문 내에서 변수를 안전하게 정의하고 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.