it-source

한 열에 따라 중복 항목에서 첫 번째 행 가져오기 마리아DB

criticalcode 2022. 11. 20. 12:18
반응형

한 열에 따라 중복 항목에서 첫 번째 행 가져오기 마리아DB

MariaDB 버전 10.2.21을 사용하고 있습니다.

중복된 user_id(열 중 하나)를 가진 행이 여러 개 있습니다.

user_id뿐만 아니라 user_id의 첫 번째 출현과 관련된 모든 행의 첫 번째 출현을 가져오고 싶습니다.

select 
  distinct user_id,
from 
  user_table
where 
  user_id in (a,b,c,d,e,f,....) and 
  date = '2020-02-25';

이제 관련 열을 추가하려고 하면 모든 것이 명확하게 나타납니다.

EXPLAIN
select 
  distinct user_id,
  ST_X(location) as lng
from 
  user_table
where 
  user_id in (a,b,c,d,e,f,....) and 
  date = '2020-02-25';

200만 행이 넘는다고...3000개의 고유 user_id밖에 없습니다.첫 번째 user_id만 관련지어져 있는 위치와 함께 취득하고 싶습니다.

데이터베이스가 매우 크기 때문에 인덱스를 최대한 활용해야 합니다.그렇지 않으면 파손됩니다.

내 인덱스는 [user_id, date]입니다.user_id는 첫 번째 인덱스, date는 두 번째 인덱스입니다.

그러면 인덱스를 사용하여 고유한 사용자 정보(처음 발생 = 맨 위 행)를 얻어서 내 db가 고장나지 않도록 하는 방법이 궁금하네요.

그래서 만약 있다면

  user_id   location
    1       (123.22, 22.33)
    1       (111.22, 22.12)
    2       (155.33, 41.23)
    2       (160.41, 12.31)

나는 얻을 것이다.

user_id   location
   1       (123.22, 22.33)
   2       (155.33, 41.23)

1개의 장소만 집약하는 경우 사용합니다.

select user_id, ST_X(min(location)) as lng
from user_table
where user_id in (a,b,c,d,e,f,....) and 
      date = '2020-02-25'
group by user_id;

언급URL : https://stackoverflow.com/questions/60518241/getting-first-rows-from-duplicates-depending-on-one-column-mariadb

반응형