建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 数据库 > Mysql 教程 >

SQL语句之查询合并表

时间:2011-06-28 10:37来源: 作者: 点击:
我们需要做的是分别从两个表中读取数据,读取的字段不一样,但最后呈现的列都是一样的。能否有办法一次合并这两个表中的数据到前台进行输出呢?因为在Silverlight进行开发时,读取数据的操作都是异步操作,如果对于此过程,使用两次查询完成两个表数据的读取,除了浪费性能,

我们需要做的是分别从两个表中读取数据,读取的字段不一样,但最后呈现的列都是一样的。能否有办法一次合并这两个表中的数据到前台进行输出呢?因为在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很能帮我们干可能涉及到的任务事情。

 

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片