Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL update a field with an incrementing variable

Tags:

I have a table named 'textile_events' in one of my databases.

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' field was introduced to the above table yesterday.

Now, I need to assign an incrementing number to 'seq_no' field for all 'headsup' events where paid field is equal to 'paid'.

In other way, I am looking for something like this,

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

How do I assign an incrementing number to a newly introduced field only to recods that satify a given condition?

What are the available options and what is the most efficient way to accomplish this?

like image 804
Upeksha Avatar asked May 20 '13 07:05

Upeksha


People also ask

How do you increment a variable in MySQL?

set @anyVariableName=0; select yourColumnName, @anyVariableName:=@anyVariableName+1 as anyVariableName from yourTableName; To understand the above syntax and set an increment counter, let us first create a table.

Can you update multiple rows in MySQL?

ON DUPLICATE KEY UPDATE clause and UPDATE with JOIN() function to update multiple columns in multiple rows with different values in MySQL.

What is the command for update in MySQL?

UPDATE `table_name` is the command that tells MySQL to update the data in a table . SET `column_name` = `new_value' are the names and values of the fields to be affected by the update query. Note, when setting the update values, strings data types must be in single quotes.


1 Answers

Are you looking for something like this?

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

SQLFiddle

like image 92
peterm Avatar answered Sep 25 '22 14:09

peterm