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

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
广东
广州
深圳

你可能感兴趣的:(sql)