资源描述:
《好用的updateselectinsertselect》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、updateselect最常用的update语法是:UPDATESET=,SET=如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个哦第二,再将变量进行赋值。列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?就好象下面insertintotable1(c1,c2,c3)(selectv1,v2,v3fr
2、omtable2)答案是可以的,具体的语法如下:UPDATESET(,)=(SELECT(,)FROMWHERE=)WHERE; 下面是这样一个例子:两个表a、b,想使b中的memo字段值等于a表中对应id的name值表a:id,n
3、ame1王2李3张表b:id,ClientName 123(MSSQLServer)语句:updateb set ClientName =a.name froma,b wherea.id=b.id (Oralce)语句:updateb set (ClientName) = (SELECTnameFROMaWHEREb.id=a.id)updatesetfrom语句格式当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率
4、比较低。对于这种情况,Sybase和SQLSERVER的解决办法是使用UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。在SQL中,表连接(leftjoin、rightjoin、innerjoin等)常常用于select语句,其实在SQL语法中,这些连接也是可以用于update和delete语句的,在这些语句中使用join还常常得到事半功倍的效果。UpdateT_OrderFormSETT_OrderForm.SellerID=B.L_TUserIDFROMT_OrderFormAL
5、EFTJOINT_ProductInfo BONB.L_ID=A.ProductID用来同步两个表的数据!Oralce和DB2都支持的语法:UPDATEASET(A1,A2,A3)=(SELECTB1,B2,B3FROMBWHEREA.ID=B.ID)MSSQLServer不支持这样的语法,相对应的写法为:UPDATEA SETA1=B1,A2=B2,A3=B3 FROMALEFTJOINBONA.ID=B.ID个人感觉MSSQLServer的Update语法功能更为强大。MSSQLSERVER的写法:UPDATEASETA
6、1=B1,A2=B2,A3=B3FROMA,BWHEREA.ID=B.ID在Oracle和DB2中的写法就比较麻烦了,如下:UPDATEASET(A1,A2,A3)=(SELECTB1,B2,B3FROMBWHEREA.ID=B.ID)WHEREIDIN(SELECTB.IDFROMBWHEREA.ID=B.ID)===============================================================================SELECT...INTO以及insertinto...sel
7、ect总结SELECT...INTO语句创建制表检索.语法SELECTfield1[,field2[,...]]INTO新表[IN外部数据库]FROM源SELECT...INTO语句可分为以下几个部分:部分说明field1,field2欲复制至新表的字段的名称。NewTable欲创建的表的名称。它应遵循标准命名公约.如果NewTable的名称与现存表的名称相同时,将会发生可以捕捉到的错误。Externaldatabase进入外部数据库的路径。有关路径的描述,请参阅IN子句。source从其中选择记录的现存表的名称。它可以是单一表或
8、多重表或一个查询。查看:http://www.aspxuexi.com/sql/sql/2006-4-8/select_insert.htm(用SELECT复制记录和表)说明可以使用生成表查询来存档记录、生成表的复制备份、或生成输出至另一个数据库的