해결된 질문
작성
·
405
답변 2
0
count는 집계 함수로 출력 레코드에 대한 개수를 산정하여 출력합니다.
따라서 FROM > WHERE 이후 레코드 출력 개수가 정해지며, 이후 사용 가능합니다.
질문자님께서 말씀하신 쿼리가 가능하려면, 서브쿼리를 이용하는 방법이 있습니다.
select * from members where idx=(case when (select count(*) from members)=1 then 2 else 1 end)
이렇게 사용이 가능합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
제노비아님의 질문을 보면, SQL 문법에 관한 문제로 보이는데 제공된 정보 중 직접적으로 해당 질문에 대한 답변을 줄 내용은 없습니다. 하지만 문제의 원인에 대해 개념적으로 설명드릴 수 있습니다.
SELECT
문 내에서 WHERE
절이 처리되는 시점에는 아직 전체 결과 집합에 대한 집계 함수(COUNT
같은)를 적용할 수 없습니다. 왜냐하면 WHERE
절은 각 행에 대해 조건을 평가하고 결과 집합을 생성하기 전에 작동하기 때문입니다. 즉, WHERE
절 내에서 COUNT
같은 집계 함수를 사용하려고 하면, 그 시점에서는 아직 전체 집합이 결정되지 않아 에러가 발생합니다.
이 경우, 하고자 하는 작업을 수행하기 위해선 서브 쿼리나 HAVING
절(집계 함수와 함께 사용될 경우)을 사용하는 등의 다른 방법을 고려해야 합니다.
질문하신 부분과 정확히 일치하는 해결책을 제공하지는 못하지만, 이러한 정보가 도움이 될 수 있기를 바랍니다. 추가적인 도움이 필요하시다면 질문의 상세한 내용과 함께 다시 문의해주시길 바랍니다.