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?
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.
ON DUPLICATE KEY UPDATE clause and UPDATE with JOIN() function to update multiple columns in multiple rows with different values 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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With