MySQL에서는 WHERE절에 임시 변수를 사용할 수 있나요?
WHERE
예를 들어 다음 쿼리에서는:
@var가 `id` 값의 두 배로 성공적으로 설정되었습니다
그러나 @var가 10보다 작은 결과만 포함하도록 결과 집합을 필터링하려고 하면 다음과 같습니다.
그러고 보니 아무런 결과도 나오지 않았습니다.
@var 값을 기준으로 결과를 필터링하는 방법은 무엇입니까?
Q: MySQL 임시 변수를 WHERE 절에 사용할 수 있나요?
네. MySQL 사용자 정의 변수(예: @var)는 WHERE 절에서 참조될 수 있습니다.
@var
사용자 정의 변수는 표현식이 평가될 때 현재 할당된 모든 값에 대한 참조입니다.
쿼리에서 WHERE 절의 조건자는 SELECT 목록의 표현식보다 먼저 평가됩니다.
즉, 행에 액세스하면 @var 이 각 후보 행에 대해 부울 표현식으로 평가되고, 표현식이 평가되어 결과가 TRUE인 경우에만 행이 반환됩니다.
이 변수에 10보다 크거나 같은 숫자 값을 지정하면 명령문을 실행하기 전에 모든 행이 반환됩니다.
Q: @var 값을 기준으로 결과를 필터링하는 방법은 무엇입니까?
정말 그럴 수 없어요. (실제로 원래 쿼리가 수행하는 작업이 바로 이것이었습니다.)
@var 之外的其他表达式中包含谓词;这些表达式可以从分配给 @var 이외의 표현식에 술어를 포함할 수 있습니다. 이러한 표현식은
HAVING 子句来过滤返回的行。 (注意:HAVING 子句在结果集准备好之后进行计算;与 WHERE옵션으로 SELECT 목록에서 표현식을 반환한 다음 행에 액세스할 때 평가하는 다른
HAVING
@var 以外的表达式应用谓词;他们实际上并没有对 @var그러나 엄밀히 말하면 이러한 방법은 모두
별칭을 할당하고 HAVING절에서 테스트해야 합니다.
한 행에서 다음 행으로 내부 결과를 전달하는 대신 수식을 사용하여 필터링하는 경우에는 이 변수가 전혀 필요하지 않습니다. 다음과 같이 쓸 수 있습니다:
Q: MySQL 임시 변수를 WHERE 절에 사용할 수 있나요?
네. MySQL 사용자 정의 변수(예:
@var
)는 WHERE 절에서 참조될 수 있습니다.사용자 정의 변수는 표현식이 평가될 때 현재 할당된 모든 값에 대한 참조입니다.
쿼리에서 WHERE 절의 조건자는 SELECT 목록의 표현식보다 먼저 평가됩니다.
즉, 행에 액세스하면
@var
이 각 후보 행에 대해 부울 표현식으로 평가되고, 표현식이 평가되어 결과가 TRUE인 경우에만 행이 반환됩니다.이 변수에 10보다 크거나 같은 숫자 값을 지정하면 명령문을 실행하기 전에 모든 행이 반환됩니다.
Q:
@var
값을 기준으로 결과를 필터링하는 방법은 무엇입니까?정말 그럴 수 없어요. (실제로 원래 쿼리가 수행하는 작업이 바로 이것이었습니다.)
@var
之外的其他表达式中包含谓词;这些表达式可以从分配给@var
이외의 표현식에 술어를 포함할 수 있습니다. 이러한 표현식은HAVING
子句来过滤返回的行。 (注意:HAVING
子句在结果集准备好之后进行计算;与WHERE
옵션으로 SELECT 목록에서 표현식을 반환한 다음 행에 액세스할 때 평가하는 다른@var
以外的表达式应用谓词;他们实际上并没有对@var
그러나 엄밀히 말하면 이러한 방법은 모두별칭을 할당하고
으아아아HAVING
절에서 테스트해야 합니다.한 행에서 다음 행으로 내부 결과를 전달하는 대신 수식을 사용하여 필터링하는 경우에는 이 변수가 전혀 필요하지 않습니다. 다음과 같이 쓸 수 있습니다:
으아아아