MySql    Select id,name from city
    order by (case when p_Orderby = 1 then id
                when p_Orderby = 2 then `name` else `name` end);p_Orderby = 1,按ID排序时,排序的结果怎么会是1,11,2这种格式?是不是反ID自动转成字符了?
我上面写的排序方式能不能按数据排序?

解决方案 »

  1.   

    记录:
    id name
    1, a
    2,z,
    11,cp_Orderby = 1 
    排序结果:
    id name
    1, a
    2,z,
    11,cp_Orderby = 2
    排序结果:
    id name
    1, a
    11,c,
    2,z
      

  2.   

    p_Orderby = 2 是按NAME排序的即A、C、Z,ID只不过是碰巧了
    p_Orderby = 1  是按ID排序的
      

  3.   

    Select id,name from city 
        order by (case when p_Orderby = 1 then id 
                  when p_Orderby = 2 then `name` else `name` end); 如果Order by 有  case语句,如上:
    按id排序的话,会出现在以下结果:id name 
    1, a 
    11,c, 
    2,z
      

  4.   

    p_Orderby中的值?很显示是按NAME排序的
      

  5.   

    不好意思。我这个SQL语句定在存储过程里。p_Orderby 是参数。传入1,2或其它值。如果传入1时排序方式不正确。
      

  6.   

    Select id,name from city
        order by (case p_Orderby when 1 then id
                  when 2 then `name` end);
    CASE WHEN有问题
      

  7.   

    Select id,name from city 
        order by (case when p_Orderby = 1 then id
         when p_Orderby=2 then `name`
       else `name` end);
    是可以执行的。
      

  8.   


    p_Orderby = 1
    排序结果:
    id name
    1, a
    2,z,
    11,c 排序方式正确
      

  9.   

    set @p_Orderby = 1;
    select * from test1
    order by (case when @p_Orderby=1 then id 
      when @p_Orderby=2 then `name` end);排序结果:id name
    1 a
    11 c
    2 z
    3 b