评估喜欢的记录

时间:2014-03-04 01:06:43

标签: sql

如何根据某些字段更新1条记录?我已经创建了一个游标来循环使用相同ID的记录,但我需要使用最新的startDate更新记录的activeFlag。

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

在这个例子中,我想为startDate为09.22.2013的记录设置activeFlag = 1

3 个答案:

答案 0 :(得分:1)

如果您按startDate订购,则可以将更新限制为第一条记录

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

答案 1 :(得分:0)

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

UPDATE myTable
SET activeFlag = 1
WHERE startDate = (SELECT MAX(startDate) FROM myTable);

但是,如果有多个行具有相同的startDate,则它们都将更新。如果您只需要更新1条记录,则可以应用LIMIT 1

答案 2 :(得分:0)

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

PS。这可能不仅仅会更新一行