user_table_a에서 user_table_b로 다음 업데이트를 수행해야합니다. 그것은 내가 생각보다 훨씬 더 어려워 보입니다. 그래서 나는 문법과 관련하여 뭔가를 놓치고 있다고 생각합니다. 다음은 테이블 구조입니다.MySQL의 동적 대량 테이블 업데이트
CREATE TABLE user_table_a (
id INT(11) NOT NULL AUTO_INCREMENT,
email VARCHAR(255),
points INT(11)
);
CREATE TABLE user_table_b (
id INT(11) NOT NULL AUTO_INCREMENT,
email VARCHAR(255),
score INT(11),
user_table_a_id INT(11)
);
사용자는 이메일 값으로 식별되는 두 테이블의 동일한 사람입니다. 전자 메일은 시스템에 고유합니다. user_table_b에 user_table_a_id
필드가 새로 추가되었으며 현재 비어 있습니다. 이 두 테이블 간의 링크로 전자 메일을 사용하여 각 user_table_a id의 올바른 값을 user_table_b의 해당 위치로 업데이트하려고합니다. 나는 이것이 PHP 나 저장 프로 시저를 이용하여 수행 될 수 있음을 알고 있지만, 나는 그것들 없이는 이것을하려고 노력하고있다. 지금까지 내 질문에 실패했습니다.
# this fails because the subquery returns more than one record and ...
# because a subquery cannot reference the table being update in the main query
UPDATE user_table_b SET user_table_a_id = (SELECT user_table_a.id FROM user_table_a, user_table_b WHERE user_table_a.email = user_table_b.user_email GROUP BY user_table_a.id) WHERE 1;
내가 시도하는 것이 가능한지 확실하지 않지만 계속 연구 할 것입니다. 도움을 준 사람에게 감사드립니다.
대신 user_table_b의, 두 번째 표는 또한 user_table_a라고합니다. –
@HamzaKubba 사실, xQbert가 나를 때렸습니다. 좋은 캐치들. – usumoio