sql联合查询|sql交叉查询|除非同时指定了 TOP否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。

来源:互联网 发布:网络电视机直播软件 编辑:程序博客网 时间:2024/06/11 16:30
  • select * from (
    select shengname,id as sid,1 as ord from szsheng
    union all
    select shiname,shengid,2 as ord from szshi) a
    order by a.sid asc,ord asc

    就可以得到以上结果,但是直接用这个语句手工在T-SQL中建立视图时去没有用提示
    除非同时指定了 TOP否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。

    直接把这个语句放到企业管理器里让它来修正错误,正确的写法是这样
    SELECT TOP 100 PERCENT *
    FROM (SELECT shengname, id AS sid, 1 AS ord
            FROM szsheng
            UNION
            SELECT shiname, shengid, 2 AS ord
            FROM szshi) a
    ORDER BY sid, ord

    以下是表结构和期望结果

     

    表1
    1   北京
    2   上海
    3   广东

    表2
    1  北京区1
    2  北京区2
    3  上海区1
    4  上海区2
    5  广州
    6  深圳

    然后希望查询结果是这样
    北京
    北京区1
    北京区2
    上海
    上海区1
    上海区2
    广东
    广州
    深圳

  • 原创粉丝点击