В этом случае у меня есть следующая таблица, мне нужно переместить все значения в user_sessions.session_str в users.user_string на основе user_id. Как этого добиться?
**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;
я бы | user_string | session_str | помощь |
---|---|---|---|
1 | 1234 | Я хочу, чтобы 1234 скопировали в users.user_string | |
2 | 5678 | Я хочу, чтобы 5678 был скопирован в users.user_string |
Тогда не вставляйте нули в таблицу пользователей. Использоватьinsert into ... select ..
следующее:
Insert into users
Select session_str from user_sessions;