2013-05-06 3 views
0

데이터를 표시하고 해당 쿼리에서 order by 절을 추가하는 쿼리를 작성하고 있습니다. 내 쿼리는 위의 쿼리에서mysql의 절로 인해 내 쿼리가 작동하지 않습니다.

SELECT * FROM `coupons` 
WHERE `status` = 'A' && `type` = '2'  
&& `time` > CURDATE() && `start_date` <= CURDATE() 
order by `stocks` asc 

가 '주식'이 아니라 어떤 경우에는 주식으로 정렬 제로 얻을, 내가 마지막으로이 행을 표시하려는 경우입니다. 도와주세요. 미리 감사드립니다.

+1

간단한 방법은 내 머리 위로 떨어져 = 항목을 나열합니다 : 값을 반환하는 저장 함수를 생성 0이 아니면 값을 전달하거나 0이면 가능한 가장 높은 값을 전달하십시오. (또는 쿼리에서'주식 주문 = 0, 그 다음 2000000000 그 밖의 종목 종료 '와 같은 주문). – cHao

답변

2
order by CASE WHEN `stocks` = 0 THEN 1 ELSE 0 END asc , `stocks` asc 
+0

완벽한 접근 방식 ... +1 –

+0

안녕하세요, 친구 감사합니다. – Danny

0
SELECT *, (if(`stocks` != 0,`stocks`,"")) as newstocks FROM `coupons` 
WHERE `status` = 'A' && `type` = '2'  
&& `time` > CURDATE() && `start_date` <= CURDATE() 
order by newstocks asc 

위의 코드를 사용하십시오.

0

기본적으로 오름차순이므로 언급 할 필요가 없습니다. 상태 = 경우 축적량의 'A'& & 타입 = '2'& & 시간> CURDATE() & & 시작일 < = CURDATE() 순서! = 0 다음 주식 종료 쿠폰 하나

SELECT * 아래를보십시오 주식 nozero 된 후 주식으로 행을 목록, 주식

먼저 완전히 MySQL의에서 제로

관련 문제