SQL ORDER BY查询

use*_*105 5 mysql sql sql-order-by

我想要我的表,rcarddet按"SDNO"(不是主键)按升序排序,但"0"除外.所以结果应该是这样的:

1
1 
2
.
.
10
0
0
Run Code Online (Sandbox Code Playgroud)

我的查询现在是:

SELECT * 
  FROM `rcarddet` 
 WHERE `RDATE` = '2011-05-25' 
   AND `RCNO` = '1' 
   AND `PLACE` = 'H' 
   AND `SDNO` != 0 
ORDER BY `rcarddet`.`SDNO` ASC;
Run Code Online (Sandbox Code Playgroud)

a1e*_*x07 6

最简单的方法

  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  
Run Code Online (Sandbox Code Playgroud)


And*_*y M 4

SELECT * 
  FROM `rcarddet` 
 WHERE `RDATE` = '2011-05-25' 
   AND `RCNO` = '1' 
   AND `PLACE` = 'H' 
ORDER BY
  `SDNO` = 0,
  `SDNO`;
Run Code Online (Sandbox Code Playgroud)