안녕하세요.
2개의 비슷한 테이블의 정보를 가져와 특정 컬럼명으로 정렬 후 페이징 처리를 하려고 합니다.
테이블 table_a, table_b, table_c가 있다고 가정하고 아래와 테스트해보니 조회할 때 마다 목록이 달라집니다...
어떤식으로 변경해야 문제 없이 목록을 불러 올 수 있을까요?
select * from (
select * from (
select name, type, reg_date... from table_a where type ='A'
unioin all
select name, type, reg_date... from table_b where type ='B'
) other_list
left join table_c c on c.prk = other_list.prk
) total_list
where temp1 = 'Y' and temp2 = 'Y'
or temp3 != ''
order by name ASC, type ASC
limit 0, 10
조회할때마다 목록이 달라진다구요?
1. 혹시 정렬 기준이 유니크하지 않아서 그런게 아닐까요?
- 정렬기준을 추가해 보세요. reg_date 및 pk 등 추가
2. 조회 조건에 OR 가 사용되네요?
- 조회 조건 정확하게 준게 맞는지도 확인해 보세요.
- OR 조건이 포함되면 조건 처리 순서가 맞는지 주의가 필요합니다.
3. 테이블이 계속 변하고 있는건 아닌가요?
- 실시간으로 입력이 되고 있다면? 조회 시점에 따라 결과가 다를 수 있습니다.