SQL-根据其中的条件更新相同的表

SQL-根据其中的条件更新相同的表,sql,Sql,我需要写一个SP,如下所示。每秒从.net windows服务应用程序调用一次此SP SELECT TOP 1 ID FROM TABLE WHERE GETDATE() < ExpirationDate ORDER BY ID 提前感谢。这将更新您在原始脚本中返回的单行值: UPDATE [table] SET Field1 = 1, Field2 = abc WHERE ID = ( SELECT MIN(ID) FROM

我需要写一个SP,如下所示。每秒从.net windows服务应用程序调用一次此SP

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

提前感谢。

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

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

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

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

您需要更全面地解释您需要什么,因为目前还不清楚。哪个DBMS、oracle、mysql或SQL server,以及您为什么要做前1名?更新表1 set col=val where getdateGETDATE@Tess,您能否更全面地解释为什么只希望更新一条记录?
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