更新选择的第一行

时间:2011-10-18 08:33:22

标签: sql postgresql

我有一个包含此列timestamp(timestamp), count(integer),name(charcter varieing)

的表格

其中的行可以说5行,名称为“apple”,并且有时间戳和计数。 我需要update colum count与行count + 1的{​​{1}}和第一个thimestamp(最小时间戳)。 我怎么能在PostgreSQL中做到这一点?

我会这样想

where name = 'apple' 但它不起作用?

2 个答案:

答案 0 :(得分:2)

这可能会有所帮助,但我没有尝试过,也许它可以进行优化。但据说,过早优化并不好。

UPDATE MyTABLE mt SET COUNT = COUNT + 1 
WHERE mt.NAME = 'apple' and 
mt.timestamp = (SELECT MIN(t.timestamp) FROM MyTABLE t where t.NAME = 'apple')

答案 1 :(得分:1)

尝试此查询:

UPDATE table SET count = count + 1 WHERE name = 'apple' ORDER BY timestamp DESC LIMIT 1

ORDER BY和LIMIT子句是“得到”“第一个时间戳”。

请注意,没有子查询或类似的东西,这意味着查询应该只执行简单的表扫描,可能在索引字段上。