欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

一个关于union的有关问题

更新时间: 2014-01-05 02:21:58 责任编辑: Author_N1

 

一个关于union的问题
select   *   from   corp
where   cp_name   like   '%% '  
  and
cp_code   in    
  (select     ga_corp   from   gstacc   a,   account   b  
      where   a.ga_accno   =   b.ac_accno   and   b.ac_ctime   > '2007-02-28   23:59:20 '     and   b.ac_ctime   <=   '2007-03-31   23:30:25 '
      union  
select     ga_corp   from   htlhis..gstacc   ha,   htlhis..account   hb    
where   ha.ga_accno   =   hb.ac_accno   and   hb.ac_ctime   > '2007-02-28   23:59:20 '    
    and   hb.ac_ctime   <=   '2007-03-31   23:30:25 '   )  

我使用Union时,提示不能使用
问解决方式


--参考方法--
select
*
from
corp
where
cp_name like '%% '
and
(cp_code in (select ga_corp from gstacc a, account b
where a.ga_accno = b.ac_accno and b.ac_ctime > '2007-02-28 23:59:20 ' and b.ac_ctime <= '2007-03-31 23:30:25 ')
or
(cp_code in (select ga_corp from htlhis..gstacc ha, htlhis..account hb
where ha.ga_accno = hb.ac_accno and hb.ac_ctime > '2007-02-28 23:59:20 '
and hb.ac_ctime <= '2007-03-31 23:30:25 '))
--参考方法--
你的结果集结构不同。select * from corp select ga_corp from 你让两个结果集结构相同。还有哥们,sybase没有oracle那么智能。所有你的sql的质量只能靠你自己控制。你的sql有问题啊,尽量不要用like “%%” .建议看看sargs的规则。
--参考方法--
用union all时,要确保两个表的列数,对应列的数据类型相同,系统自动以第一个查询的列名作为结果的列名。
--参考方法--
个人建议用存储过程来实现,将你SQL语句进行拆分,并将结果放入临时表,最后返回临时表。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:21:58
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8958/
本文WWW.DOC100.NET DOC100.NET版权所有。