MySQL UNION 정렬 문제 질문드려요 0 1 1,257

by 레이진 [SQL Query] [2022.09.05 11:28:34]


안녕하세요.

 

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

by 마농 [2022.09.05 12:40:01]

조회할때마다 목록이 달라진다구요?
1. 혹시 정렬 기준이 유니크하지 않아서 그런게 아닐까요?
- 정렬기준을 추가해 보세요. reg_date 및 pk 등 추가
2. 조회 조건에 OR 가 사용되네요?
- 조회 조건 정확하게 준게 맞는지도 확인해 보세요.
- OR 조건이 포함되면 조건 처리 순서가 맞는지 주의가 필요합니다.
3. 테이블이 계속 변하고 있는건 아닌가요?
- 실시간으로 입력이 되고 있다면? 조회 시점에 따라 결과가 다를 수 있습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입