SQL query ORDER BY

I want to have my table rcarddetsorted by "SDNO" (not primary key) in ascending order, with the exception of "0". So it should look like this:

1
1 
2
.
.
10
0
0

Now my request is:

SELECT * 
  FROM `rcarddet` 
 WHERE `RDATE` = '2011-05-25' 
   AND `RCNO` = '1' 
   AND `PLACE` = 'H' 
   AND `SDNO` != 0 
ORDER BY `rcarddet`.`SDNO` ASC;
+5
source share
2 answers
SELECT * 
  FROM `rcarddet` 
 WHERE `RDATE` = '2011-05-25' 
   AND `RCNO` = '1' 
   AND `PLACE` = 'H' 
ORDER BY
  `SDNO` = 0,
  `SDNO`;
+4
source

The easiest way

  SELECT * FROM rcarddet   
   WHERE RDATE = '2011-05-25' and RCNO = '1'and PLACE = 'H'  
ORDER BY CASE  
           WHEN rcarddet.SDNO  = 0 THEN [max_number_for_the_type_of_SDNO]  
           ELSE rcarddet.SDNO   
         END ASC  
+6
source

All Articles