안녕하세요 조인문의 결과값을 카운트 하고싶은데 ... 0 2 1,121

by 허영현 [MySQL] [2022.05.16 18:15:06]



select       t.QNA_ID,
		t.QNA_CLA_ID,
		t.INQR_CN,
		t.ANS_CN,
		t.ANS_CN_CBT,
		t.ANS_TYP_CD,
		t.INQ_CNT,
		t.RVSN_STT_CD,
		t.USE_YN,
		t.DEL_YN,
		t.FRST_REG_DT,
		t.FRST_RGTR,
		t.LAST_MDFCN_DT,
		t.LAST_MDFR,
		t.LAST_SYNC_DT,
		t.QNA_LV,
		tc.QNA_CLA_ID,
		tc.QNA_CLA_LRG_ID,
		tc.QNA_CLA_MID_ID,
		tc.QNA_CLA_SML_ID,
		tc.QNA_CLA_LEV,
		tc.QNA_CLA_NM
		from T_QNA t
		left join T_QNA_CLA tc on tc.qna_cla_id = t.QNA_CLA_ID;

 이구문을 카운트 하고싶어서 

select count(*),
		t.QNA_ID,
		t.QNA_CLA_ID,
		t.INQR_CN,
		t.ANS_CN,
		t.ANS_CN_CBT,
		t.ANS_TYP_CD,
		t.INQ_CNT,
		t.RVSN_STT_CD,
		t.USE_YN,
		t.DEL_YN,
		t.FRST_REG_DT,
		t.FRST_RGTR,
		t.LAST_MDFCN_DT,
		t.LAST_MDFR,
		t.LAST_SYNC_DT,
		t.QNA_LV,
		tc.QNA_CLA_ID,
		tc.QNA_CLA_LRG_ID,
		tc.QNA_CLA_MID_ID,
		tc.QNA_CLA_SML_ID,
		tc.QNA_CLA_LEV,
		tc.QNA_CLA_NM
		from T_QNA t
		left join T_QNA_CLA tc on tc.qna_cla_id = t.QNA_CLA_ID;

이렇게 작성을 하니 SQL Error [1140] [42000]: (conn=1229) In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'scpdb.t.QNA_ID'; this is incompatible with sql_mode=only_full_group_by 라는 에러가 계속 뜨네요 찾아보니까 my.inf? 들어가서 설정을 바꿔야한다는데 다른방법은 없을까요?

by 마농 [2022.05.16 18:44:12]

기존 쿼리는 여러행을 반환합니다.
카운트는 하나의 행을 반환합니다.
이 두가지 서로 다른 성격의 결과가 단순하게 서로 어우러질 수는 없습니다.
MySQL 에서는 이런 비표준 구문이 허용되기는 하지만
결과가 의미하는 바가 뭔지? 알 수 없는 이상한 쿼리가 되어 버립니다..
하여 사용을 권하지 않습니다.

표준 구문으로는 다음과 같이 가능합니다.
1. 조회 컬럼 다 빼고 COUNT(*) 만 하거나
2. 분석함수 이용 COUNT(*) OVER() 추가 하거나


by 허영현 [2022.05.17 09:35:47]

감사합니다 조인문이라서 앞에 조회 컬럼이 있어야하는줄 알고 착각했네요 카운트만 조회하는거로 바꿨습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입