본문 바로가기
MySql

MySQL 세부 선택 및 그룹화 기준

by 베이스 공부 2021. 1. 16.
반응형

두 개의 테이블이 있습니다.

메인 : id_main, field1, 필터

main_logs (5 천만 라인) : auto inc, id_main, path

다음 결과를 찾고 있습니다. id_main, field1, 가장 일반적인 경로

다음 쿼리를 시도했습니다.

select id_main, 
  field1, 
  (select path, count(*) as cpt 
   from main_log 
   where main_log.id_main=main.id_main group by path order by cpt desc limit 1) 
from main 
where filter in (1,3,5);

MySQL 반환 : 피연산자는 1 개의 열을 포함해야합니다.

경로를 제거하면 결과는 정확하지만 경로 값이 누락됩니다.

select id_main, 
  field1, 
  (select path, count(*) as cpt 
   from main_log 
   where main_log.id_main=main.id_main group by path order by cpt desc limit 1) 
from main 
where filter in (1,3,5);

count (*)의 결과는 필요하지 않지만 "order by"에는 필요합니다.

내 결과를 얻기 위해이 쿼리를 어떻게 작성할 수 있습니까? 감사

기본

id_main     | field1    | filter
1       | red       | 1
2       | blue      | 3
3       | pink      | 1

메인 _ 로그

autoinc     | id_main   | path
1       | 1         | home1
2       | 1         | home2
3       | 1         | home2
4       | 2         | house2
5       | 2         | house7
6       | 2         | house7
7       | 3         | casee

예상 결과

id_main     | fields1   | most common path
1       | red       | home2
2       | blue      | house7
3       | pink      | casee

 

해결 방법

 

다음을 사용해야합니다.

SELECT id_main, field, 
    (SELECT path 
    FROM main_logs 
    WHERE id_main=main.id_main 
    GROUP BY path 
    ORDER BY count(path) DESC 
    LIMIT 1) AS most 
FROM main 
WHERE filter IN (1,3,5);

테스트를 마쳤습니다.

 

참조 페이지 https://stackoverflow.com/questions/14032319

 

 

반응형

댓글