Sql server Microsoft SQL-选择时更新

Sql server Microsoft SQL-选择时更新,sql-server,Sql Server,在选择数据时是否有更新的方法以避免额外的访问 我们选择2500个数据集,并需要将值设置为1。在执行此操作时,当前的解决方案是在配置文件中执行此操作,1乘1,这将导致2500次对数据库的访问…您可以轻松地将选择查询转换为更新 我不知道您的SELECT是什么样子,但您可以遵循以下模式: SELECT c.column1 , b.column2 , a.column3 FROM Table1 a INNER JOIN Table2 b ON a.PK =

在选择数据时是否有更新的方法以避免额外的访问


我们选择2500个数据集,并需要将值设置为1。在执行此操作时,当前的解决方案是在配置文件中执行此操作,1乘1,这将导致2500次对数据库的访问…

您可以轻松地将
选择
查询转换为
更新

我不知道您的
SELECT
是什么样子,但您可以遵循以下模式:

SELECT
    c.column1
    , b.column2
    , a.column3
FROM Table1 a
    INNER JOIN Table2 b
        ON a.PK = b.FK
    INNER JOIN Table3 c
        ON b.PK = c.FK
WHERE a.column4 = 'a'
    AND b.column4 = 'x'


这将完成数据库访问和所有工作。

使用存储过程可以解决这个问题,允许您在返回一个或多个结果集之前执行所需的任何逻辑。顺便说一句,您的标题是Microsoft SQL,但您已经标记了问题mysql。Microsoft SQL=SQL server?实际上,我只是不知道如何称呼它-我们使用SQL server 2014 Management Studio,是Microsoft SQL吗?是的,是Microsoft SQL server。但是,您标记的不是MySQL。select是一个非更新查询,所以不是。但这不会给我select的结果,对吗?我们在开始时选择要由后续概要文件处理的数据。想法是将“ErrorField”设置为1,以防配置文件遇到值问题。目前,它会一次又一次地运行错误的数据,直到有人修复数据,这可能会在整个周末发生,而且什么都没有处理。@Dex是的,不会。但它将解决您的更新问题。然而,如果您仍然在为您的选择进行2500次数据库访问,那么您的问题就在别处,而且要大得多。你需要做一些大的重构。我不完全理解你的意思:/错误就在我这边,因为我没有澄清我真正想要什么,或者更确切地说是为什么,我只是想知道这是否可能。我们选择并需要分别更新选择的行,但需要逐个更新,因为不可能一个批处理(因为它们随后被拆分)。因此,我希望避免每7分钟对2500个数据集进行5000次更新:)好的,因此,如果您当前的设计很难从对2500个数据集进行选择切换,那么更新数据并返回数据的唯一方法是
更新
,然后
选择
。这是没办法的。
UPDATE a
SET column3 = 1
    , column4 = 'b'
FROM Table1 a
    INNER JOIN Table2 b
        ON a.PK = b.FK
    INNER JOIN Table3 c
        ON b.PK = c.FK
WHERE a.column4 = 'a'
    AND b.column4 = 'x'