老大好,这个语句可以完成,我提问的时候忘了,还有一个排序字段sort,
id sort
3   0
4   1
1   2
2   3
5   4
我后面加了句",sort asc"
不过结果没有按照sort从低到高排

解决方案 »

  1.   

    用我的数据
    id sort
    1   0
    2   1
    3   2当id=2的时候,结果为
    id sort
    2   1
    1   0
    3   2当id=3的时候,结果为
    id sort
    3   2
    1   0
    2   1我想要的结果就是,等于id的那个排前面,然后再按sort升序排序。
      

  2.   

    你已经根据你的ID排序了第二个sort字段的升序只会在ID字段相同的情况下生效也就是如果有N个字段排序,第N个排序生效的条件是前面N-1个字段都相同
      

  3.   


    ORDER BY IF(ID=4,-100,sort) asc如果sort有值小于 - 100 那就不行
      

  4.   

    \不行,这样会将sort最小的那个(0),排在前面,然后再将等于id那个排第二,剩下的按sort升序排。
      

  5.   


    这是原始数据如果用
    SELECT * FROM cata ORDER BY IF(c_id=4,0,c_id) ASC,得出的结果就是如果用
    SELECT * FROM cata ORDER BY IF(c_id=4,0,c_sort) ASC,得出的结果就是
      

  6.   

    ID ID1
    1 0
    2 1
    3 2
    4 3
    5 4
    6 5ORDER BY IIF(ID=3,-1,ID1)orderID ID ID1
    bbbb 3 2
    aaaa 1 0
    aaaa 2 1
    bbbb 4 3
    bbbb 5 4
    bbbb 6 5
      

  7.   

    用我的数据
    id sort
    1   0
    2   1
    3   2当id=2的时候,结果为
    id sort
    2   1
    1   0
    3   2当id=3的时候,结果为
    id sort
    3   2
    1   0
    2   1我想要的结果就是,等于id的那个排前面,然后再按sort升序排序。order by id=3 desc,id;
      

  8.   

    用我的数据
    id sort
    1   0
    2   1
    3   2当id=2的时候,结果为
    id sort
    2   1
    1   0
    3   2当id=3的时候,结果为
    id sort
    3   2
    1   0
    2   1我想要的结果就是,等于id的那个排前面,然后再按sort升序排序。order by id=3 desc,id;非常感谢,就是这个,可能之前没有说得清楚,所以让回答的朋友产生了误解,特别感谢wwwwb的耐心回答,学到了用if,哦,这里说下可能是wwwwb多打了一个“I”应该不是“IIF”,是"IF"吧,也谢谢benluobobo的回答。