Sql 像记录一样评估
如何根据某个字段更新1条记录?我已经创建了一个游标来循环遍历具有相同ID的记录,但是我需要用最新的开始日期更新该记录的activeFlagSql 像记录一样评估,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,如果您按起始日期下单,则可以将更新限制为第
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