Подтвердить что ты не робот

MySQL обновляет поле с добавочной переменной

У меня есть таблица с именем "textile_events" в одной из моих баз данных.

mysql> describe textile_events;

+-------------+--------------+-----+---------+----------------+
| Field       | Type         | Key | Default | Extra          |
+-------------+--------------+-----+---------+----------------+
| id          | int(11)      | PRI | NULL    | auto_increment |
| token       | varchar(20)  |     | NULL    |                |
| reg_time    | datetime     |     | NULL    |                |
| eid         | varchar(20)  |     | NULL    |                |
| fname       | varchar(20)  |     | NULL    |                |
| lname       | varchar(20)  |     | NULL    |                |
| paid        | varchar(10)  |     | NULL    |                |
| seq_no      | int(11)      |     | NULL    |                |
+-------------+--------------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> select count(*) from textile_events;

+----------+
| count(*) |
+----------+
|     9325 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from textile_events where eid = 'headsup' ;

+----------+
| count(*) |
+----------+
|     2553 |
+----------+
1 row in set (0.01 sec)
В предыдущей таблице было добавлено поле

'seq_no'.

Теперь мне нужно присвоить добавочное число "seq_no" для всех "headsup", где плавающее поле равно "платный".

Другими словами, я ищу что-то вроде этого,

$i = 250
while( true ):
    $i++
    UPDATE textile_events SET 'seq_no' = $i 
        WHERE eid = 'headsup' AND paid = 'paid'
endwhile;

Как назначить добавочное число только что введенному полю только для исправления которые удовлетворяют заданному условию?

Каковы доступные параметры и что является наиболее эффективным способом для этого?

4b9b3361

Ответ 1

Вы ищете что-то вроде этого?

UPDATE textile_events e,
       (SELECT @n := 249) m
   SET e.seq_no = @n := @n + 1 
    WHERE e.eid = 'headsup' AND e.paid = 'paid'

SQLFiddle

Ответ 2

простой запрос был бы, просто установите переменную на некоторое число, которое вы хотите. затем обновите требуемый столбец, увеличив 1 с этого номера. для всех строк он будет обновлять каждый идентификатор строки, увеличивая 1

    SET @a  = 50000835 ;  
    UPDATE `civicrm_contact` SET external_identifier = @a:[email protected]+1 
    WHERE external_identifier IS NULL;

надеюсь, что это поможет кому-то.:)

Ответ 3

Может быть, это поможет вам...

DELIMITER $$
    DROP PROCEDURE IF EXISTS manual_increment_count$$
    CREATE PROCEDURE manual_increment_count()
    BEGIN
     DECLARE count INT DEFAULT 0;
     SELECT COUNT(*) INTO count FROM textile_events 
     WHILE count > 0 
       SET count = count + 1;
       update textile_events 
            set seq_no = count  where eid = 'headsup' AND paid = 'paid'; 
     END WHILE;
    END$$
    DELIMITER ;