2014-03-07 4 views
1

하나의 테이블 행에 product_price 열이 있습니다. 제품의 가격이 낮을 경우 (discount) discount_price 열은 sql result에 별칭으로 설정됩니다. 제품 가격이 할인되지 않은 경우 (더 낮은 가격이 아닌 경우)이 콜럼 discount_price는 null입니다.두 개의 열에서 값순으로 MySQL을 정렬

내가 원하는 것은이 세트를 주문하고 product_price (discount_price가 null 인 경우) 및 discount_price에서 값순으로 정렬하는 것입니다. 예를 들어

 

---------------------------------------- 
ID product_price discount_price 
---------------------------------------- 
1  4800   NULL 
2  13000   4400 
3  3300   NULL 
4  10500   9600 
5  1600   NULL 
 

I 하강을 주문할 때이 결과를 얻으려면 :

 

---------------------------------------- 
ID product_price discount_price 
---------------------------------------- 
4  10500   9600 
1  4800   NULL 
2  13000   4400 
3  3300   NULL 
5  1600   NULL 
+0

그것이 내가 그런 일이 가능하다면 NT 확신'IFNULL (discount_price, PRODUCT_PRICE)에 의해 ORDER'에 가능하다면 시도하지만 아니요이 –

+0

에게 바란 결과를 시도 가치 의미와 그들은 당신이 말한대로 주문하지 않습니다. –

+0

아직 검색어를 작성하지 않으셨습니까? –

답변

1

(discount_price가 null의 경우 discount_price가 discout_price에 값을 확인 NOT_NULL 경우, PRODUCT_PRICE의 값을 확인) 사용해보기 :

SELECT * FROM my_table 
ORDER BY IFNULL(discount_price, product_price); 
1

시도해보십시오.

SELECT * FROM table1 
ORDER BY CASE WHEN discount_price IS NULL  then PRODUCT_PRICE 
       WHEN discount_price IS NOT NULL then discount_price 
    END DESC 

DEMO HERE

+0

기본적으로 'IFNULL'은 무엇입니까 ... 'IFNULL'-Approach를 시도해 보셨습니까? 코드는 훨씬 더 깔끔하고 짧을 것입니다. 나는 또한 빨리 생각한다. –

관련 문제