Insert into select表复制语句
Insert是SQL中常用的语句,主要用途就是向表中添加数据。下面说说Insert子句的几种形式:
1、Insert Into Table(field1,fields2,……)values(value1,value2,……)
这种语法形式的Insert语句,一般用于向表中所有字段或者部分字段添加字符串。
如果是向表中部分字段添加数据,table后面的括号内容就不能省略。形式就是上面的形式Insert Into Table(field1,fields2,……)values(value1,value2,……);
如果是向表中所有字段添加数据,table后面的括号就可以省略。就是这样:Insert Into Table values(value1,value2,……)
2、Insert Into Table1 Select value1,value2,value3,…… from table2 where ……
这种语法形式的Insert语句,主要用于表复制。它能将Table2中的部分或者全部数据复制到Table1中。
如果我们要实现的功能是复制Table2中的一部分数据,和一部分字符串,我们只需要将Table2中所需数据和所需字符串放在Select后面。Insert语句会自动识别。
下面来个例子:
今日做收费系统的时候,我想实现这样一个功能:就是将卡表中的部分数据(最新余额)连同BLL层传过来的字符串一起复制到充值记录表中,这是就要用到上面讲的Insert Into Select 表复制语句了。
我们来看下面的实现:
''' <summary> ''' 向充值表中增加充值记录,添加时为True ''' </summary> ''' <param name="chargeRec">AddChargeRecord</param> ''' <returns></returns> ''' <remarks></remarks> Public Function AddChargeRecord(ByVal chargeRec As Entry.ChargeRecord) As Boolean Dim sql As String = "Insert Into ChargeRecordset select '" & chargeRec.CardID & "'," & "card.newestcash" & ",'" & chargeRec.ChargeDate & "','" & chargeRec.ChargeTime & "','" & chargeRec.Actor & "'" & " from card where card.cardnumber='" & chargeRec.CardID & "'" Dim sqlcmd As SqlCommand = New SqlCommand(sql, con) Try con.Open() sqlcmd.ExecuteReader() Return True Catch ex As Exception con.Close() con = Nothing Return False End Try If Not IsNothing(con) Then con.Close() con = Nothing End If End Function