繁体   English   中英

SQL-根据WHERE中的条件更新同一表

[英]SQL - Update same table based on a condition in WHERE

我需要编写如下的SP。 从.net Windows服务应用程序每秒调用一次此SP。

SELECT TOP 1 ID  
  FROM TABLE  
 WHERE GETDATE() < ExpirationDate  
ORDER BY ID  

如果GetDate() > ExpirationDate使用值更新记录列。

我不想执行以下操作,因为每次调用SP时,它都会查看整个表以进行更新。
我只想更新SP当前正在查看的记录。

UPDATE [TableName]   
SET fiel1=1 , field2 = 'abc'  
WHERE ExpirationDate > GETDATE()

提前致谢。

使用更新/选择。 根据您的SQL实例的配置方式,您可能必须使用下面的第二个示例包装内部选择

UPDATE [TableName] SET [TableName].fiel1= 1 , [TableName].field2 = 'abc'
FROM (
    SELECT TOP 1 ID
     FROM TABLE
     WHERE GETDATE() < ExpirationDate
    ORDER BY ID
) a
where [TableName].ID = a.ID

可能必须尝试以下方法:

UPDATE [TableName] SET [TableName].fiel1= 1 , [TableName].field2 = 'abc'
FROM (
    SELECT TOP 100 PERCENT * FROM (
          SELECT TOP 1 ID
          FROM TABLE
          WHERE GETDATE() < ExpirationDate
          ORDER BY ID
       ) b
     ) a
where [TableName].ID = a.ID

这将更新您在原始脚本中返回的单行值:

UPDATE [table]
SET 
    Field1 = 1,
    Field2 = abc
WHERE ID = 
  (
    SELECT MIN(ID)
    FROM [table]
    WHERE GETDATE() < ExpirationDate 
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM