Sql 像记录一样评估

Sql 像记录一样评估,sql,Sql,如何根据某个字段更新1条记录?我已经创建了一个游标来循环遍历具有相同ID的记录,但是我需要用最新的开始日期更新该记录的activeFlag someID startDate endDate activeFlag 6 2011-07-25 9999-12-31 0 6 2013-09-22 9999-12-31 0 在本例中,我想为起始日期为2013年9月22日的记录设置activeFlag=1,如果您按起始日期下单,则可以将更新限制为第

如何根据某个字段更新1条记录?我已经创建了一个游标来循环遍历具有相同ID的记录,但是我需要用最新的开始日期更新该记录的activeFlag

someID  startDate    endDate      activeFlag
6       2011-07-25   9999-12-31   0
6       2013-09-22   9999-12-31   0

在本例中,我想为起始日期为2013年9月22日的记录设置activeFlag=1,如果您按起始日期下单,则可以将更新限制为第一条记录

update your_table
set activeFlag = 1
order by startDate desc
limit 1

如果我正确理解了您的条件,您可以使用带有子查询的更新查询来获取最新(或最大)开始日期值

UPDATE myTable
SET activeFlag = 1
WHERE startDate = (SELECT MAX(startDate) FROM myTable);
但是,如果有多行具有相同的起始日期,则它们都将得到更新。如果只需要更新1条记录,则可以应用
限制1

update X set activeFlag = 1 where startDate = (select max(startDate) from X)

注:这可能会更新不止一行,当然

在activeflag字段上执行更新,其中startdate=@cursorvariableholdingtheStartDate