inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Ngữ pháp SQL cơ bản để tấn công SQL SQL thành công

Câu điều kiện

case when에 count를 넣으면?

Đã giải quyết

963

nhs20golstaff5838

8 câu hỏi đã được viết

1

select * from members m where m.idx=(case when count(m.idx)=1 then 2 else 1 end)

이렇게 하면 에러가 나오는데 이유를 모르겠네요

sql 모의해킹 mysql

Câu trả lời 2

0

crehacktive

count는 집계 함수로 출력 레코드에 대한 개수를 산정하여 출력합니다.

따라서 FROM > WHERE 이후 레코드 출력 개수가 정해지며, 이후 사용 가능합니다.

질문자님께서 말씀하신 쿼리가 가능하려면, 서브쿼리를 이용하는 방법이 있습니다.

select * from members where idx=(case when (select count(*) from members)=1 then 2 else 1 end)

이렇게 사용이 가능합니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

제노비아님의 질문을 보면, SQL 문법에 관한 문제로 보이는데 제공된 정보 중 직접적으로 해당 질문에 대한 답변을 줄 내용은 없습니다. 하지만 문제의 원인에 대해 개념적으로 설명드릴 수 있습니다.

SELECT 문 내에서 WHERE 절이 처리되는 시점에는 아직 전체 결과 집합에 대한 집계 함수(COUNT 같은)를 적용할 수 없습니다. 왜냐하면 WHERE 절은 각 행에 대해 조건을 평가하고 결과 집합을 생성하기 전에 작동하기 때문입니다. 즉, WHERE 절 내에서 COUNT 같은 집계 함수를 사용하려고 하면, 그 시점에서는 아직 전체 집합이 결정되지 않아 에러가 발생합니다.

이 경우, 하고자 하는 작업을 수행하기 위해선 서브 쿼리나 HAVING 절(집계 함수와 함께 사용될 경우)을 사용하는 등의 다른 방법을 고려해야 합니다.

질문하신 부분과 정확히 일치하는 해결책을 제공하지는 못하지만, 이러한 정보가 도움이 될 수 있기를 바랍니다. 추가적인 도움이 필요하시다면 질문의 상세한 내용과 함께 다시 문의해주시길 바랍니다.

화면 크기에 대하여

0

66

2

질문이요

1

395

1

MAC 에서는 그냥 mysql로 하면 될까요?

1

536

1

질문입니다.

1

340

1

apmsetup 질문입니닷

1

481

1

APMSetup 랜섬웨어

1

497

1

기존의 mysql

1

262

1

APM 설치 에러

2

339

1

APMSatup설치

1

274

1

서브쿼리 7:48부분 select name, (select email from member where seq=a.seq) from member a;

1

318

2

실행 안 됨

1

269

2

강의 자료 문의

1

262

1

char(); 질문이 있습니다.

1

213

2

저는

1

323

1

강의음량

1

223

1

선생님

1

310

2

올려주신 apmsetup이 win32전용이라는데 64에서 실행해도 상관없는건가요?...

1

410

3

apmsetup 말고 다른 사이트 있나요?

1

420

2

char(); 함수 반환값이 영상과 다릅니다.

2

431

3

스칼라 서브쿼리 질문입니다.

1

415

2

안녕하세요. 아스키코드관련 질문입니다.

1

294

1

mysql 패스워드 변경 후 로그인 오류

2

709

1

dB 이름 변경은 어떻게하나요?

0

416

1

select의 정확한 용도는무엇인가요?

0

265

1