如何根据某些字段更新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
答案 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。这可能不仅仅会更新一行