Обновить первый ряд выбора - PullRequest
0 голосов
/ 18 октября 2011

У меня есть таблица с этими столбцами timestamp(timestamp), count(integer),name(charcter varieing)

есть строки в ней, скажем, 5 строк с именем "apple", метка времени и счет в differante.Мне нужно update столбец count с count + 1 строки where name = 'apple' и первая метка времени (наименьшая метка времени).Как я могу сделать это в PostgreSQL?

Я бы так подумал

"UPDATE table SET count = count+1 WHERE name='apple' HAVING LEAST(timestamp)", но это не работает?

Ответы [ 2 ]

2 голосов
/ 18 октября 2011

Это может помочь, однако я не пробовал и, возможно, его можно оптимизировать.Однако, как говорится, преждевременная оптимизация не годится.

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 голос
/ 18 октября 2011

Попробуйте этот запрос:

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

Предложение ORDER BY и LIMIT - это то, что «получает» «первую метку времени».

Обратите внимание, что нет подзапросов или чего-то подобногоэто означает, что запрос должен выполнять простое сканирование таблицы, возможно, в индексированных полях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...