【问题标题】:find duplicate insert into another table找到重复插入另一个表
【发布时间】:2009-12-02 16:17:44
【问题描述】:

我有一个代码可以将我的数据加载到 sql 表中。我想知道如果有任何重复值,有什么方法可以将数据加载到其他表中。如果是的话,你能帮助我吗?我的查询是:

"插入 t_DATA_DneFrc (RTN, AccountNbr, FirstName, MiddleName, LastName, Amount) 值 ('" & rcdDNE("RTN") & "', '" & rcdDNE("AccountNbr") & "', '" & rcdDNE("FirstName") & "', '" & rcdDNE("MiddleName") & "', '" & rcdDNE("LastName") & "', '" & rcdDNE("Amount") & "') "

这会将数据插入t_DATA_DneFrc 表中。现在我想更改查询,如果有重复插入该行到t_DATA_DneFrcDuplicate。这可能吗?

 ' Write records to Database

frmDNELoad.lblStatus.Caption = "Loading data into database......"

Dim lngRecCount As Long
lngRecCount = 0
rcdDNE.MoveFirst

 With cmdCommand
    .ActiveConnection = objConn
    .CommandText = "insert into t_DATA_DneFrc (RTN, AccountNbr, FirstName, MiddleName, LastName, Amount) values ('" & rcdDNE("RTN") & "', '" & rcdDNE("AccountNbr") & "', '" & rcdDNE("FirstName") & "', '" & rcdDNE("MiddleName") & "', '" & rcdDNE("LastName") & "', '" & rcdDNE("Amount") & "')"
    .CommandType = adCmdText

End With

Set rcddnefrc = New ADODB.Recordset
With rcddnefrc
    .ActiveConnection = objConn
    .Source = "SELECT * FROM T_DATA_DNEFRC"
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Open
End With

Do Until rcdDNE.EOF
    lngRecCount = lngRecCount + 1
    frmDNELoad.lblStatus.Caption = "Adding record " & lngRecCount & " of " & rcdDNE.RecordCount & " to database."
    frmDNELoad.Refresh
    DoEvents
    Call CommitNew
    rcdDNE.MoveNext
Loop

frmDNELoad.lblStatus.Caption = "DNE Processing Complete."
frmDNELoad.Refresh

End Function
Sub CommitNew()

'     Add records to DneFrc table
With rcddnefrc
    .Requery
    .AddNew
    .Fields![RTN] = rcdDNE.Fields![RTN]
    .Fields![AccountNbr] = rcdDNE.Fields![AccountNbr]
    .Fields![FirstName] = rcdDNE.Fields![FirstName]
    .Fields![MiddleName] = rcdDNE.Fields![MiddleName]
    .Fields![LastName] = rcdDNE.Fields![LastName]
    .Fields![Amount] = rcdDNE.Fields![Amount]
    .Update
End With

【问题讨论】:

    标签: sql sql-server sql-server-2005 vb6


    【解决方案1】:

    您需要运行第二个查询,看起来应该是这样的

    insert into t_DATA_DneFrcDuplicate 
          (RTN, AccountNbr, FirstName, MiddleName, 
           LastName, Amount, Occurances)
      select RTN, AccountNbr, FirstName, MiddleName, 
             LastName, Amount, COUNT(*)
      from   t_DATA_DneFrc
      group by RTN, AccountNbr, FirstName, MiddleName, 
               LastName, Amount
      having COUNT(*) > 1
    

    (这是 Oracle 语法;希望同样适用于您。)

    【讨论】:

    • 没有我能看到的 Oracle 特定语法,在 SQL Server 上应该是安全的。
    • 什么是事件?我需要在发生的地方写点什么吗?
    • 为了清楚起见,我只是想在 SELECT 子句中包含 COUNT(),然后将其插入名为 Occurances 的列中。当然,您不必:插入 t_DATA_DneFrcDuplicate (RTN, AccountNbr, FirstName, MiddleName, LastName, Amount) 选择 RTN, AccountNbr, FirstName, MiddleName, LastName, Amount from t_DATA_DneFrc group by RTN, AccountNbr, FirstName, MiddleName,姓氏,数量有 COUNT() > 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2017-12-10
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多