创建了一个视图,视图语句后面加了 ‘order by 字段c’,即想按字段c顺序来显示数据,打开视图结果并非如此。
怎么回事?是视图中的ORDER BY 无效吗?如何实现按我指定的列来排序呢?

解决方案 »

  1.   

    帮助文档
    除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效
      

  2.   

    从视图里查出来后在排序吧要不就别用视图了 直接用sql查
      

  3.   

    视图表示一个逻辑实体,所以视图中的行是没有顺序的。TOP 和ORDER BY以及FOR XML和ORDER BY可以出现在视图的定义中,单独的ORDER BY却是不可以的。所以定义视图不能使用ORDER BY。
    可以在使用视图的时候使用ORDER BY,例如 SELECT * FROM 视图名称 order by 排序字段
      

  4.   

    同意,如果没有必要还是建议LZ直接使用SQL语句或者存储过程
      

  5.   

    视图和控件直接绑定,想让控件显示的值按某列顺序排列,木有办法加SQL了
      

  6.   

    视图只是一个虚拟表,只能按照你存储进去的顺序排列,要不你修改视图先排序试试CREATE VIEW NUMBER_VIEW
    AS
    SELECT TOP 100 PERCENT
    NUMBER 
    FROM 
    MASTER..SPT_VALUES 
    WHERE 
    TYPE='P' 
    AND 
    NUMBER BETWEEN 1 AND 12 ORDER BY NUMBER DESC
    SELECT * FROM NUMBER_VIEWNUMBER      
    ----------- 
    12
    11
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1(所影响的行数为 12 行)
      

  7.   

    CREATE VIEW NUMBER_VIEW
    AS
    SELECT TOP 100 PERCENT
    NUMBER,TYPE 
    FROM 
    MASTER..SPT_VALUES 
    WHERE 
    TYPE='P' 
    AND 
    NUMBER BETWEEN 1 AND 12 ORDER BY NUMBER DESC
    SELECT * FROM NUMBER_VIEW
    NUMBER      TYPE 
    ----------- ---- 
    12          P  
    11          P  
    10          P  
    9           P  
    8           P  
    7           P  
    6           P  
    5           P  
    4           P  
    3           P  
    2           P  
    1           P  (所影响的行数为 12 行)DROP VIEW NUMBER_VIEW什么意思,?
      

  8.   


    CREATE VIEW NUMBER_VIEW
    AS
    SELECT TOP 100 PERCENT
        NUMBER ,high
    FROM 
        MASTER..SPT_VALUES 
    WHERE 
        TYPE='P' 
    AND 
        NUMBER BETWEEN 1 AND 12 ORDER BY high DESC
    select * from NUMBER_VIEWNUMBER      high
    ----------- -----------
    1           2
    2           4
    3           8
    4           16
    5           32
    6           64
    7           128
    8           1
    9           2
    10          4
    11          8
    12          16(12 行受影响)不是按high排的
      

  9.   


    CREATE VIEW NUMBER_VIEW
    AS
    SELECT TOP 100 PERCENT
        high
    FROM 
        MASTER..SPT_VALUES 
    WHERE 
        TYPE='P' 
    AND 
        NUMBER BETWEEN 1 AND 12 ORDER BY high DESC
    select * from NUMBER_VIEW
      

  10.   

    ORDER BY 子句仅用于确定视图定义中的 TOP 子句返回的行。ORDER BY 不保证在查询视图时得到有序结果,除非在查询本身中也指定了 ORDER BY。通过外层再加排序来实现:
    select * from View_test order by Col1
      

  11.   

    CREATE VIEW NUMBER_VIEW
    AS
    SELECT TOP 100 PERCENT
        NUMBER,HIGH 
    FROM 
        MASTER..SPT_VALUES 
    WHERE 
        TYPE='P' 
    AND 
        NUMBER BETWEEN 1 AND 12 ORDER BY HIGH DESC
    SELECT * FROM NUMBER_VIEWNUMBER      HIGH        
    ----------- ----------- 
    7           128
    6           64
    5           32
    4           16
    12          16
    11          8
    3           8
    2           4
    10          4
    9           2
    1           2
    8           1(所影响的行数为 12 行)
    DROP VIEW NUMBER_VIEW你的不同?我的都行
      

  12.   

    建议之后再排序.
    加top 100 percent一定程度上影响性能.
      

  13.   

    TONY哥好久不见了,
    楼主如果要绑定,可以先通过查询ORDER BY 后填充数据集,再设置数据源应该可以,
      

  14.   

    拷你上面的代码在我这的结果NUMBER      HIGH
    ----------- -----------
    1           2
    2           4
    3           8
    4           16
    5           32
    6           64
    7           128
    8           1
    9           2
    10          4
    11          8
    12          16(12 行受影响)
      

  15.   

    指定了TOP是可以用ORDER BY 的
      

  16.   

    看这个帖子
    http://topic.csdn.net/t/20061124/11/5182161.html#