2014-03-07 2 views
0

JPA에서 구현 한 각 유형별로 5 가지 뉴스를 조회하고 프론트 엔드로 돌아갈 필요가있는 요구 사항이 있습니다.postgreSQL 분류 제한

지금은 두 가지 솔루션,

  1. 하나 수동으로 주석에 의해 노조 SQL을 추가하는 것입니다,
  2. 전화 루프에서 서로 다른 매개 변수 유형에 의해 서비스를했습니다. 사실

는 내가 원하는 것은 단지 SQL처럼 같은

select id, title, content 
from portal p 
where p.type = 'NEWS' 
order by create_date 
limit 5 

union 

select id,title,content, 
from portal p 
where p.type = 'MAG' 
order by create_date 
limit 5 

union... 

솔루션 용액 B는 효율적이지 않다 동안이다 유형으로, JAVA 많은 SQL 문을 코딩 할 필요 아래 10 개 이상

데이터를 쿼리하는 다른 방법이 있습니까? 주석 또는 postgreSQL 함수에 의해? 나는 JPA & Postgres를 처음 접하다.

미리 감사드립니다.

답변

0

단일 SQL 문으로이 작업을 수행 할 수 있습니다. 테이블 스캔을 피할 수 있을지 확신 할 수 없습니다. 대부분 정렬 할 필요가 있는지에 따라 더 많은 열을 포함해야 할 수도 있습니다.

select * 
from (select 
     id, title, content, 
     row_number() over (partition by type order by create_date asc) row_num 
     from portal 
    ) as numbered_rows 
where row_num <= 5; 

이러한 종류의 SQL 문의 장점 중 하나는 유지 관리가 필요 없다는 것입니다. 얼마나 많은 다른 유형을 추가하더라도 계속해서 올바르게 작동합니다.

처음 다섯 (order by create_date ASC) 또는 최신 다섯 (order by create_date DESC)가 필요한지 신중하게 생각하십시오.

+0

예 ... 파티션을 잃어 버렸습니다. 감사 :) –

관련 문제