资源描述:
《双表查询,sql语句使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、双表查询,SQL语句使用双表查询,SQL语句使用2009/04/1709:59A.M.Selectaid,a1,a2from[表a]unionallSelectbid,b1,b2from[表b]使用Union的关键点:一、查询结果是一个数据集,它的字段名以第1个Select后面的字段列表为准,后面的Select的字段列表需要与第1个的对齐(字段个数和数据类型相同,名称无所谓)例如如下这句,就是增加一条记录。Selectaid,a1,a2from[表a]unionallSelectbid,b1,b2from[表b]Unionselect0,'111','222'如下会出错,因为第一个S
2、elect中的字段111为整型,会造成[表b]的b1字段内容强行向整型转换,转换会失败:将varchar值'b11'转换为数据类型为int的列时发生语法错误。select0,111,'222'UnionSelectbid,b1,b2from[表b]二、unionall中的“All”不加的话,是自动剔除重复的记录(重复的记录只保留1条),加上“All”则会保留所有数据。---------------------------------按问题补充:1)让查询结果添加到一张新表里面;2)按某个条件查询,比如查询出结尾为22的数据。显示a22b22:只需要增加几个子句就可以了:1)将查询结果
3、放到新表:Selectaid,a1,a2into[新表名]from[表a]unionallSelectbid,b1,b2from[表b]--关键点:SELECTINTO必须是包含UNION运算符的SQL语句中的第一个查询。2)增加查询条件:Selectaid,a1,a2from[表a]wherea2like'%22'unionallSelectbid,b1,b2from[表b]whereb2like'%22'--关键点:每个子查询都要单独增加相应的查询条件!-----------------------对于“超时时间已到,……”:可能原因是:1、数据量过大;2、SQL的超时设置不够长
4、。所以你可以尝试把SQL的超时设置长一些,比如2分钟;再就是把这个Union拆成两句来分别执行:Selectaid,a1,a2into[新表名]from[表a]Insertinto[新表名]Selectbid,b1,b2from[表b]如果还超时,那就复杂了,可能数据量太大、其他性能、索引、等综合检查了。对于增加自增长字段的问题,是这样的,在Selectinto这种方式生成新表时,是无法指定自增长字段的。所以办法就是:先建立好表,再用Insertinto的方式向里面插入数据:CREATETABLEdbo.NewTABLE(MyidintNOTNULLIDENTITY(1,1),oid
5、intNULL,Avarchar(50)NULL,Bvarchar(50)NULL)ON[PRIMARY]GOInsertinto[NewTABLE](oid,A,B)Selectaid,a1,a2from[表a]Insertinto[NewTABLE](oid,A,B)Selectbid,b1,b2from[表b]Go----------------------------------“单纯的查询时候定义自增列”,这个据我所知是不行的,不知SQL2005是否有此功能。因为查询的结果总是来源于现有数据或常数,且SQL的记录是没有行号概念的。看能否从现有数据中的某一列通过某种计算得到一
6、个貌似自增的结果。类似:select*,一个公式(某列)asMyIDfrom[tablename]--------------------------------------------------------------------------------------有关数据库的一写操作:CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20),SsexCHAR(1),SageINT,SdeptCHAR(15));插入记录:insertintoStudent(Sno,Sname,Ssex,Sdept)values('aaa',
7、'mary','f','172');删除记录:deletefromStudentwhereSno='aaa';注:只需要删除一个主键就可以了。其他的记录会相应的删除掉。删除表中一个字段:ALTERTABLEStudentDROPcolumnSsex;列名;修改表中的那一行数据:原来的记录:SnoSnameSsexSdeptaaamaryf172updateStudentsetSname='mary1',Ssex='m'whereSno='aaa';修改后: