这是一张结构简单的表,flag列是主键列,数据类型tinyint,flagname列定义了唯一约束(unique),数据类型varchar(20)。现在的问题是未按flag进行排序。尝试过:1、将主键约束删除,就会按flag排序2、将唯一约束删除,亦会3、将flag数据类型改为varchar,亦会请问,如何在保证有主键、有唯一、主键为tinyint的情况下以主键列排序

解决方案 »

  1.   

    select * from TB order by cast(flag as varchar(20))
      

  2.   


    我知道order by了
    我是要:
    不加order by的情况下,如何让这表自然以主键列进行排序?
      

  3.   

    把聚集索引 改成flag 试试
      

  4.   


    确定flag是聚集,flagname是非聚集。可为什么那么多种条件下都能按主键排序,就是【主键+有唯一约束+主键为数值类型】这三者合一就不能了呢,纠结啊
      

  5.   

    SQL77所言:
    当你查询表的时候并不需要去聚集索引。而是非聚集索引即可。当然是按你索引的顺序显示了。如果你再多一列.非聚集索引解决不了.自然就按聚集索引来了.
    有道理,如果用到主从表,看来是要修改表结构了。。既然无解,结贴了!