- Mysql 4.0 Условие: update или insert, Romik, 09:45 , 30-Окт-06 (1)
>Требуется проверить существует ли запись. Если ее нету то добавить запись с >толькочто поступившими данными, если запись есть, то прибавить в ней значение. > >Пример: >// n = 15 >// проверить существует ли запись >select * from t where hour=12; > >// если записи нет то: >insert into t (n,hour) values (15,12); > >// если запись есть >update t set n=n+15 where hour=12; > >Обезательно выполнять такую операцию в 2 запроса или есть более простые способы? > использузйте оператор CASE
- Mysql 4.0 Условие: update или insert, Richi, 12:29 , 30-Окт-06 (3)
>Требуется проверить существует ли запись. Если ее нету то добавить запись с >толькочто поступившими данными, если запись есть, то прибавить в ней значение. > >Пример: >// n = 15 >// проверить существует ли запись >select * from t where hour=12; > >// если записи нет то: >insert into t (n,hour) values (15,12); > >// если запись есть >update t set n=n+15 where hour=12; > >Обезательно выполнять такую операцию в 2 запроса или есть более простые способы? >В MySQL есть оператор REPLACE. Если записи нет, то делает INSERT, если есть, то делает UPDATE.
- Mysql 4.0 Условие: update или insert, Васька, 12:51 , 30-Окт-06 (4)
> >В MySQL есть оператор REPLACE. Если записи нет, то делает INSERT, если >есть, то делает UPDATE. Насколько я понял REPLACE не делает update, она просто заменяет. REPLACE не предоставляет доступа к замещаемой записи, значит все равно придется сделать в начале select чтобы получить значение n, затем суммировать его и потом записать. Т.е. в REPLACE запись n=n+15 не прокатит.
- Mysql 4.0 Условие: update или insert, Dreid, 15:34 , 02-Ноя-06 (5)
>Насколько я понял REPLACE не делает update, она просто заменяет. REPLACE не >предоставляет доступа к замещаемой записи, значит все равно придется сделать в >начале select чтобы получить значение n, затем суммировать его и потом >записать. Т.е. в REPLACE запись n=n+15 не прокатит. А вот такое? (Взято из http://mysql.org/doc/refman/4.1/en/insert-on-duplicate.html) INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; Там документация не разделяет 4.0 и 4.1, так что я не могу сказать, есть ли это в 4.0
- Mysql 4.0 Условие: update или insert, Dreid, 19:05 , 02-Ноя-06 (6)
Дополнение: Cамо сабой, поле по которому мы ищем дубликат должно быть UNIQUE (ну или PRIMARY) KEY.
- Mysql 4.0 Условие: update или insert, Васька, 14:49 , 03-Ноя-06 (7)
>Дополнение: >Cамо сабой, поле по которому мы ищем дубликат должно быть UNIQUE (ну >или PRIMARY) KEY. Вот это то что нужно, спасибо :) Есть только одна не большая проблемка: Уникальных столбцев нет, но уникальность есть в совокупности нескольких столбцев, например - year, month, day, hour. Думаю добавить в таблицу еще один столбец UNIQUE, который будет содержать стороку типа "year-month-day-hour" он и будет уникальным.
- Mysql 4.0 Условие: update или insert, elvenic, 18:35 , 03-Ноя-06 (8)
>>Дополнение: >>Cамо сабой, поле по которому мы ищем дубликат должно быть UNIQUE (ну >>или PRIMARY) KEY. > >Вот это то что нужно, спасибо :) > >Есть только одна не большая проблемка: >Уникальных столбцев нет, но уникальность есть в совокупности нескольких столбцев, например - >year, month, day, hour. Думаю добавить в таблицу еще один столбец >UNIQUE, который будет содержать стороку типа "year-month-day-hour" он и будет уникальным. Да нет, не надо так делать. Надо создать primary key (или unique) по всем этим полям: create table T ( year integer, month integer, day inteer, hour integer, ... primary key (year, month, day, hour) )
|