首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请教通过union联合两条Select语句后的排序有关问题

2012-02-01 
请问通过union联合两条Select语句后的排序问题?请问,如果表A和表B的字段是相同的,但唯一的是表A的a字段是i

请问通过union联合两条Select语句后的排序问题?
请问,如果表A和表B的字段是相同的,
但唯一的是表A的a字段是int型的,而表B的a字段是nvarChar型的;
要联合查询这两个表(select   from   A   union   select   from   B)
而且要通过a字段进行整型排序,该怎么处理?

我用:select   a,a1,a2   from   A
            union    
            select   a,a1,a2   from   B
            order   by     a
时,出错:“将   varchar   值转换为数据类型为   int   的列时发生语法错误。”

如果:select   a=convert(char,a),a1,a2   from   A
            union    
            select   a=convert(char,a),a1,a2   from   B
            order   by     a
时,是可以,但是按字符排序的。

如果用分开查询却不符合设计要求,现急中。。。

[解决办法]
declare @ta table(a int,a1 nvarchar(10),a2 nvarchar(10))
insert @ta
select 1, 'x ', 'y ' union all
select 2, 'x ', 'y ' union all
select 3, 'x ', 'y '
declare @tb table(a nvarchar(10),a1 nvarchar(10),a2 nvarchar(10))
insert @tb
select '4 ', 'x ', 'y ' union all
select '5 ', 'x ', 'y ' union all
select '6 ', 'x ', 'y '

select a,a1,a2 from @ta
union all
select cast(a as int),a1,a2 from @tb order by a DESC

/*结果
a a1 a2
----------- ---------- ----------
6 x y
5 x y
4 x y
3 x y
2 x y
1 x y
*/

[解决办法]
当 表B 的 a 列包括 'w4 '这样的字符时怎么能安照整型排序呢?
或者你是有别的要求?

热点排行