2026, 새로운 도약을 시작합니다.

C컬럼을 검색할때 A컬럼을 중복제외하고 A,B,C 컬럼값을 가져오는 검색 쿼리문 질문입니다. 채택완료

table1 테이블에

A,B,C 값이

A => aaa,bbb,ccc,aaa,bbb,ccc,

B => a,b,c,d,e

C => 6,abc1,8,9,abc1,abc1

이렇게 있다고 가정하고

C컬럼을 검색해서 

A컬럼의 중복값 제외하고

A,B,C 컬럼의 값을 출력하려고 합니다.

DISTINCT 를 쓸려고 했지만

컬럼을 모든컬럼이나 1개만 가져올수있는것같고,

모든컬럼 * 를 사용하면 다른컬럼의 중복체크도 하기때문에

제가 원하는결과값이 아닙니다.

GROUP BY 로

select A,B,C from table1 where C like '%ab%' GROUP BY A

이런식으로 해봤는데

안되더라구요....

어떻게하면 될까요???

구문 사용법이 틀린걸까요??

답변 3개

채택된 답변
+20 포인트

GROUP_CONCAT 으로 GROUP 절 이외 컬럼을 묶어보세요

select A,GROUP_CONCAT(B,C) from table1 where C like '%ab%' GROUP BY A

다만 이 방법은 GROUP_CONCAT 의 제한 사이즈가 있기 때문에 결과 길이가 너무 큰 문자열이 될 경우 잘릴수 있음에 유의해야 하거나 필요한 경우 설정 변경이 필요할수 있습니다.

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

오오 감사합니다.
혹시 GROUP_CONCAT(B,C) 에서
B 컬럼과 C 컬럼을 분리시킬수는 없나요?
값이 합쳐져서 나와서
row는 쉼표로 구분하면 될거같긴한데...
약간은 억지스럽게(?) 이런식으로 가능하긴 합니다.
[code]
GROUP_CONCAT(CONCAT('B::', B),CONCAT('::::C::', C))
[/code]
그리고 역시 그만큼 group_concat_max_len 을 낭비합니다.

row 쉼표 부분 또한 GROUP_CONCAT 의 SEPARATOR 키워드로 변경 가능합니다.
[code]
GROUP_CONCAT(CONCAT('B::', B),CONCAT(',C::', C) SEPARATOR '::::')
[/code]
오우 감사합니다~

댓글을 작성하려면 로그인이 필요합니다.

C컬럼을 검색해서 

A컬럼의 중복값 제외하고

A,B,C 컬럼의 값을 출력하려고 합니다

==

C컬럼에는 있고

A칼럼에는 없는 레코드를 가져오는 건가요?

Self join으로 처리 하면 어떨까요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

위에 베르만님이 알려주신대로 GROUP BY 를 이용해서 GROUP_CONCAT 로 컬럼 구분해서 해결하긴했는데 혹시 다른 좋은 방법이 있나요? 예시 코드 써주시면 감사하겠습니다.

댓글을 작성하려면 로그인이 필요합니다.

SELECT A, B, C FROM table1 WHERE C LIKE '%ab%' GROUP BY A HAVING COUNT(*) = 1;

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

적어주신것을 대입해서 쿼리문을 돌려봤는데,

#1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxxx'which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

PhpMyAdmin 에서는 위처럼 에러가 뜨는데
혹시 sql_mode=only_full_group_by 이 값이 설정되어서 안되는건가요?
이건 호스팅사에서 변경 안해줄거같은데...

혹시 다른방법은 없을까요??
sql mode도 query 문으로 가능합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고