order by不是楼主说的那样的,order by如果有多个字段的话,他是先根据第一个字段先排序,然后第一个字段如果相同的话再根据第二个字段排序,以此类推。比如你说的那个情况结果应该是不变的,再如:total rank2 11 31 2order by total,rank之后结果是:total rank1 21 32 1SELECT total , (select count(*) from 表 where col <= main.col) as rankFROM 表 mainORDER BY total