0

In this case I have the following table, I need to move all values on user_sessions.session_str to users.user_string based on the user_id. How to achieve this?

**Schema (MySQL v5.7)**

CREATE TABLE users (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  user_string varchar(20)
);

INSERT INTO users (user_string) VALUES (NULL);
INSERT INTO users (user_string) VALUES (NULL);

CREATE TABLE user_sessions (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  user_id INT,
  session_str varchar(20)
);

INSERT INTO user_sessions (user_id, session_str) VALUES (1,1234);
INSERT INTO user_sessions (user_id, session_str) VALUES (2,5678);

Query #1

SELECT 
users.*, 
user_sessions.session_str, 
concat('I want ',session_str,' to be copied into users.user_string') as 'help'
FROM users 
JOIN user_sessions on user_sessions.user_id = users.id;
id user_string session_str help
1 1234 I want 1234 to be copied into users.user_string
2 5678 I want 5678 to be copied into users.user_string

View on DB Fiddle

Zurupupz
  • 335
  • 2
  • 12

1 Answers1

0

Then dont insert nulls in the users table. Use insert into ... select .. as follows:

Insert into users
Select session_str from user_sessions;
Popeye
  • 35,427
  • 4
  • 10
  • 31