次の更新を user_table_a から user_table_b に実行する必要があります。私よりもはるかに難しいように見えるので、構文に関して何かが欠けていると思います。これらはテーブル構造です:
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
フィールドが新しく追加され、現在は空です。これら 2 つのテーブル間のリンクとして電子メールを使用して、各 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;
私が試みていることが可能かどうかはわかりませんが、研究を続けます。助けてくれた人に感謝します。