SQL语句之查询表合并
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很能帮我们干可能涉及到的任务事情。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>