我需要執行從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