MySQL 에서 다른 테이블의 select 결과값을 조건으로 주고 쿼리 방법
조회수 17822회
하고자 하는건 아래와 같습니다.
- a 테이블의 select 쿼리 결과를 a_result라 한다.
- b 테이블에서 a_result를 하나씩 가져와서 b테이블에 해당하는 값이 몇개가 있는지 select로 조회한다.
예시A) select col_name from table_a where col_name like '%val%';
결과A) val1 val2 val3
예시B) select col, count(col) from table_b where col like '%결과A의 값1%' OR col like '%결과A의 값2%' ...group by ...
결과 B) val1 | 1 val2 | 12 val3 | 44
좀 더 설명을 덧붙이자면 테이블A의 하나의 컬럼에 대해 select로 결과값을 뽑습니다. 이 결과값이 수십개 되는데 이 값들이 테이블B의 특정 필드의 값으로 들어가 있습니다. 최종적으로는 테이블B에 테이블A에서 뽑은 값이 각각 몇개씩 들어가 있는지를 뽑아내야합니다. php에서 수십번의 반복문을 돌리면 얻어낼 수 있겠지만 SQL문을 좀 더 잘 써보고자 하는 마음에 질문드립니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
방법은 많지만 서브쿼리를 사용할 수 있을 것 같네요.
select col_name, count(*) from table_b where col_name in ( select col_name from table_a where col_name like '%val%' ) group by col_name;
-
필드 이름을 몰라서 설명을 드리기는 어렵지만 group by를 검색해서 사용해 보세요. group by는 특정 필드를 group 지어서 데이터를 뽑아내는 방법입니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력