SQL语句之查询表合并

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 19:29 点击:

SQL语句强大的,完美的,使用它可以完成各种可能的需求。下边就说说今天遇到的问题,一同事在做读取数据时,碰到这样的疑惑,分别从两个表中读取数据,读取的字段不一样,但最后呈现的列都是一样的。能否有办法一次合并这两个表中的数据到前台进行输出呢?因为在Silverlight进行开发时,读取数据的操作都是异步操作,如果对于此过程,使用两次查询完成两个表数据的读取,除了浪费性能,在代码的同步性上也有所下降,此问题的出现,我觉得SQL肯定是可以的,就帮这同事处理之,果然很快就解决了,现分享给大家。

先说一下涉及到的两个表:

考试表:ExamTB

涉及字段:EId int,EName varchar(50),SubjectId int,EStartTime datetime

任务表:TaskTB

涉及字段:TId int,TName varchar(50),SubjectId int,TStartTime datetime

当然这两个表还有其他一些不一样的字段,此处忽略,但查询出来的就是如上字段,两个表查询出相同的东西,现在就是要把两个查询的结果合并到一个表中输出出来,当然额外加一个字段Type标识是考试表,还是任务表中的数据,原始的想法:

select EId,EName ,SubjectId ,EStartTime ,1 as type from ExamTBselect TId ,TName ,SubjectId ,TStartTime ,2 as type from TaskTB一看就明了,虽然从两个不同的表中读取数据,但显示的结果都是一样的,要是能从一个表出去,效果特好,想到连表把两个表连在一个表,不行呀

没有相互关联的字段。此时想到的临时表,对使用临时表把记录都存在一块不就可以了。

怎么存储呢,不会用游标逐一循环表,实现插入吧,那也太折腾了,经分析不用使用此功能即可实现相应的功能。

具体代码如下:

--创建用于存储相同数据的临时表CREATE TABLE #TempTB (TId int,TName varchar(50),SubjectId int,TType    int)--插入考试表数据,1表示是考试insert into #TempTB(TId,TName,SubjectId,TType)select EId,EName,SubjectId,EStartTime ,1from ExamTB--插入任务表数据,2表示此数据是来自任务表insert into #TempTB(TId,TName,SubjectId,TType)select TId,TName,SubjectId,TStartTime,2from TaskTB--输出数据select * from #TempTB--删除临时表drop table #TempTB通过如上的方法,完成查询相同数据内容,在同一个表的输出,方法行之有效,当然涉及到相关业务逻辑,已经省略,此处只针对对应的需求,对涉及的关联和各种业务逻辑,进行删除。通过以上例子,是不是觉得SQL很能帮我们干可能涉及到的任务事情。

 

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • sql server 列转行
      • SQL小技巧系列 --- 行转列合并
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1