1 Востаннє редагувалося Master_Sergius (24.04.2015 15:09:40)

Тема: Зміна поля в циклі

Суть проблеми. Є таблиця, виду:

поле1 (ід), поле2 (код), поле3 (часова мітка), далі йде ще кілька полів, які взагалі не мають значення

ід - автоінкремент, але поскільки завантажуться всякі дампи та інше, то тут айдішніки передбачити які будуть - неможливо
поле2, поле3 - це унікальний складений ключ, при цьому, код може повторюватися, в дампі зате різні часові мітки

і ось, шо мені треба: мені треба апдейтити тепер цю таблицю після завантаження дампа на теперішню часову мітку, але щоб вона була різною для кожного рядка, тобто якби +1 для кожного наступного рядка:

ід | код | теперішня часова мітка | ...
ід | код | теперішня часова мітка + 1| ...
ід | код | теперішня часова мітка + 2| ...
ід | код | теперішня часова мітка + 3| ...

Чи можна таку штуку зробити чисто засобами MySQL?

Думав щось по типу ось такого, але не знаю як його до толку довести:

DELIMITER $$
CREATE PROCEDURE update_timestamp()
BEGIN

    DECLARE c int ;
    SET c = 0 ;
    WHILE c< (тут тра якось COUNT(*) застосувати, можливо через HAVING, поки не знаю) DO
      UPDATE my_table 
        SET поле3 = UNIX_TIMESTAMP() + c
        WHERE (не знаю яку умову заюзати);
      SET c = c + 1 ;
    END WHILE ;

END $$
DELIMITER ;

прошу допомоги

2

Re: Зміна поля в циклі

На даний момент Я підхачив сам дамп скриптом, який написав на улюбленому пайтоні. Але якщо хтось зна, як це зробити засобами MySQL, то пишіть, а раптом буде щось цікавеньке.

3

Re: Зміна поля в циклі

SET @count=0;
SET @stamp=CURRENT_TIMESTAMP;
UPDATE tab 
  SET time = @stamp + INTERVAL (@count:=@count + 1) SECOND 
  ORDER BY id ASC;

http://sqlfiddle.com/#!9/f3c30/1