我有一个包含此列timestamp(timestamp), count(integer),name(charcter varieing)
其中的行可以说5行,名称为“apple”,并且有时间戳和计数。
我需要update
colum count
与行count + 1
的{{1}}和第一个thimestamp(最小时间戳)。
我怎么能在PostgreSQL中做到这一点?
我会这样想
where name = 'apple'
但它不起作用?
答案 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子句是“得到”“第一个时间戳”。
请注意,没有子查询或类似的东西,这意味着查询应该只执行简单的表扫描,可能在索引字段上。