我需要执行从 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
字段是新添加的,当前为空。使用电子邮件作为这两个表之间的链接,我想将每个 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;
我不确定我正在尝试的是否可能,我将继续研究。感谢任何提供帮助的人。