I added a new column, supervisor_id, to a USERS table that I need to populate from the same USERS table:
ID | USERNAME | SUPERVISOR_USERNAME | SUPERVISOR_ID
1 | jdoe | jsmith | NULL
2 | jsmith | dduck | NULL
How would I loop through the table to set the supervisor_id = id, like this:
ID | USERNAME | SUPERVISOR_USERNAME | SUPERVISOR_ID
1 | jdoe | jsmith | 2
2 | jsmith | dduck | NULL
I tried the following, but it obviously only set the supervisor_id where the user's supervisor_username was his own username.
update users
set supervisor_id = id
where supervisor_username = username
The syntax to modify a column in a table in MySQL (using the ALTER TABLE statement) is: ALTER TABLE table_name MODIFY column_name column_definition [ FIRST | AFTER column_name ]; table_name. The name of the table to modify.
To copy column definitions from one table to another. Open the table with columns you want to copy and the one you want to copy into by right-clicking the tables, and then clicking Design. Click the tab for the table with the columns you want to copy and select those columns. From the Edit menu, click Copy.
MySQL UPDATE command can be used to update multiple columns by specifying a comma separated list of column_name = new_value. Where column_name is the name of the column to be updated and new_value is the new value with which the column will be updated.
How do I copy data from one column to another column in SQL? UPDATE table SET columnB = columnA; This will update every row. This will also work if you want to transfer old value to other column and update the first one: UPDATE table SET columnA = 'new value', columnB = columnA .
You can make a self-join with the multiple table UPDATE
syntax:
UPDATE users u
JOIN users s ON s.SUPERVISOR_USERNAME = u.USERNAME
SET u.SUPERVISOR_ID = s.ID
See it on sqlfiddle.
You should then drop your SUPERVISOR_NAME
column, which violates 3NF; instead, you can make another self-join when you retrieve the data if so desired:
SELECT u.ID, u.USERNAME, s.USERNAME AS SUPERVISOR_USERNAME, u.SUPERVISOR_ID
FROM users u LEFT JOIN users s ON s.ID = u.SUPERVISOR_ID
See it on sqlfiddle.
update Users u
inner join Users temp on
u.Supervisor_username = temp.UserName
set u.Supervisor_ID = temp.ID
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