在单个SQL Server查询中更新多行-在VBA中

菲尔

我正在使用VBA通过以下代码更新Access数据库:

For i = 1 To imax
    strSql = "UPDATE Products SET Price ='" & vArray(i, 2) & "' WHERE ID = '" &   vArray(i, 1) & "';"
    connDB.Execute (strSql)
Next i

这行得通,但可能非常慢,因为有5,000至10,000行需要更新(imax)。

有没有一种方法可以使用单个SQL语句?

我在下面尝试了Jatin的建议。不幸的是,它并没有在我这边飞(尝试下面的前三行):

UPDATE p SET p.Price = x.SetValue FROM Products p INNER JOIN (
SELECT '149' AS SetValue, 'P100005' AS WhereValue  UNION ALL 
SELECT '129' AS SetValue, 'P100001' AS WhereValue  UNION ALL 
SELECT '99' AS SetValue, 'P100002' AS WhereValue  ) AS x ON p.ID = x.WhereValue;
贾廷·帕特尔

我不是VBA专家,但是下面的任务可以完成任务。

strValues = "INNER JOIN (VALUES "
For i = 1 To imax    
    strValues = strValues & IIF(i = 1,"",",") & "('" & vArray(i, 2) & "', '" & vArray(i, 1) & "')"
Next i
strValues = strValues & " ) AS x(SetValue, WhereValue) ON p.ID = x.WhereValue "
strSql = "UPDATE p SET p.Price = x.SetValue FROM Products p " & strValues
connDB.Execute (strSql)

下面是一个替代解决方案,它使用UNION ALL建立值表。

strValues = "INNER JOIN ("
For i = 1 To imax    
    strValues = strValues & vbCrLf & "SELECT '" & vArray(i, 2) & "' AS SetValue, '" & vArray(i, 1) & "' AS WhereValue " & IIF(i = imax,""," UNION ALL ") 'skip Union All for last entry
Next i
strValues = strValues & " ) AS x ON p.ID = x.WhereValue "
strSql = "UPDATE p SET p.Price = x.SetValue FROM Products p " & strValues
connDB.Execute (strSql)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询单个表中的更新

来自分类Dev

单个查询中的SQL Server表组合

来自分类Dev

如何使用python中的单个MySQL查询更新多行?

来自分类Dev

使用IN子句更新SQL Server中的多行

来自分类Dev

如何用SQL Server中的单个更新查询交换表中的列位值

来自分类Dev

SQL Server在单个查询中返回多个查询

来自分类Dev

使用一个SQL查询更新多行中的单列

来自分类Dev

如何使用SQL查询更新表中的多行?

来自分类Dev

在一个sql查询中更新多行

来自分类Dev

如何使用单个查询在SQL Server 2008中创建和更新视图

来自分类Dev

更新SQL中的多行

来自分类Dev

使用不同的表更新 SQL Server 中的多行

来自分类Dev

递归查询中的SQL Server更新

来自分类Dev

SQL Server更新查询中的if条件

来自分类Dev

单个子查询在Oracle中返回多行

来自分类Dev

PDO 在单个查询中插入多行

来自分类Dev

如何在SQL Server 2008中的单个存储过程中编写两个更新查询

来自分类Dev

SQL中的单个条件选择查询

来自分类Dev

单个查询中的SQL SUM和计数

来自分类Dev

单个SQL查询中的多个计数

来自分类Dev

如何在单个查询中使用联接和聚合函数更新表中的多行

来自分类Dev

如何在单个查询中使用联接和聚合函数更新表中的多行

来自分类Dev

SQL Server查询,用于将每个列中的单个值转换为单个列

来自分类Dev

在PL / SQL中更新多行

来自分类Dev

在PL / SQL中更新多行

来自分类Dev

循环更新sql中的多行

来自分类Dev

SQL Server 存储过程将多行 SELECT 语句结果存储到单个变量中

来自分类Dev

如何停止SQL Server查询返回此查询中相同项目ID的多行

来自分类Dev

在SQL Server中合并多行

Related 相关文章

热门标签

归档