MYSQL根据JOIN/关系将所有值从一个表的列插入到另一个表中



在这种情况下,我有下表,我需要根据user_id将user_sessions.session_str上的所有值移动到users.user_string。如何做到这一点?

**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);

查询#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;
帮助[/tr>
iduser_stringsession_str
11234我希望1234复制到用户中。user_string
25678我希望将5678复制到用户中。user_string

然后不要在users表中插入null。使用insert into ... select ..如下:

Insert into users
Select session_str from user_sessions;

最新更新