mysql 잘하시는분 조언좀 부탁드려요

mysql 잘하시는분 조언좀 부탁드려요

QA

mysql 잘하시는분 조언좀 부탁드려요

본문

안녕하세요.

 

우선 그누와 상관없는 질문이라 죄송합니다.

mysql 정렬에 대해 고민을 하고 있습니다.

잘하시는분 좀 알려주세요..ㅠㅠ

 

code

name

key1

key2

 a123

A

1000

1100

 a124

B

1000

 

 b12

C

2000

1300

b123

D

2000

1200

c12

E

1500

 

c123

F

1500

2000

 

 

 

위의 데이터가 있다고 가정합니다.

 

원하는데로 데이터 값을 노출하는건 되겠는데,

 

key2 값이 있을땐 key2 값을, 없을때 key1 값을 가져와서 올림차순으로 정렬되게 하려면 어떻게 해야 하나요?

 

order by key2 asc, key1 asc   <==  이렇게 했더니, 

 

key2 가 먼저 정렬되고, 그뒤로 key1 이 정렬되서 나오는데 아래처럼요..

 

 

code

name

key1

key2

a123

A

1000

1100

b123

D

2000

1200

b12

C

2000

1300

c123

F

1500

2000

a124

B

1000

 

c12

E

1500

 

 

 

 

key2 값이 있을땐 key2 값을, 없을때 key1 값을 기준으로 올림차순으로 정렬되게 하려면 어떻게 해야 하나요? 

 

아래처럼요....

 

code

name

key1

key2

a124

B

1000

 

a123

A

1000

1100

b123

D

2000

1200

b12

C

2000

1300

c12

E

1500

 

c123

F

1500

2000

 

 

 

 

 

그누와상관없는 질문이라 죄송합니당.

mysql 잘하시는분 좀 알려주세용~  ㅡㅡ

 

 

이 질문에 댓글 쓰기 :

답변 2

order by 절에 if문이 사용 가능합니다.

 

회원님같은경우엔 대상필드가 int 형이라고 가정할때

 

order by if ( key2 > 0 , key2, key1 ) asc


이런식으로 접근해보세요.

 key2 의 값이 0 보다 크다면 key2 값으로 asc 정렬

읍다면 key1 값으로 asc 정렬..

 

ORDER BY IF (key2 IS NOT NULL || key2 <> '' || key2 > 0, key2, key1) ASC

 

위에분의 조건에 null 체크와 빈값 체크만 더붙였습니다. (해당 타입이 int가 아니라는 조건에)  

port443님  알려주신데로도 사용이 가능하네요....너무 감사합니다.

두분다 정말 딱맞는 답을 알려주셨는데 한분만 선택가능해서..먼저 알려주신 로핑님 선택할께요.

port443님 이해해주실거죠??  ~~~~감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 124,011 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT