Ответ 1
Вы ищете что-то вроде этого?
UPDATE textile_events e,
(SELECT @n := 249) m
SET e.seq_no = @n := @n + 1
WHERE e.eid = 'headsup' AND e.paid = 'paid'
У меня есть таблица с именем "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;
Как назначить добавочное число только что введенному полю только для исправления которые удовлетворяют заданному условию?
Каковы доступные параметры и что является наиболее эффективным способом для этого?
Вы ищете что-то вроде этого?
UPDATE textile_events e,
(SELECT @n := 249) m
SET e.seq_no = @n := @n + 1
WHERE e.eid = 'headsup' AND e.paid = 'paid'
простой запрос был бы, просто установите переменную на некоторое число, которое вы хотите. затем обновите требуемый столбец, увеличив 1 с этого номера. для всех строк он будет обновлять каждый идентификатор строки, увеличивая 1
SET @a = 50000835 ;
UPDATE `civicrm_contact` SET external_identifier = @a:[email protected]+1
WHERE external_identifier IS NULL;
надеюсь, что это поможет кому-то.:)
Может быть, это поможет вам...
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 ;