使用基于另一个填充表的内部join update语句更新空表

zlwx9yxi  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(317)

重要提示:我是mysql的新手。
我必须更新一个表,并且我正在尝试使用update语句而不是insert语句来更新一个表,基于内部联接查询上的另一个表。
我的第一个表如下所示:
出口信用跟踪器名称

id association_id designation_name

基于另一个表:
出口信用跟踪器协会:

id, credit_type, association_name, address, city, province, postal_code, country, cycle_type, cycle_begin, cycle_months

'1', '2', 'Association', '14 bloor street', 'Toronto', 'ON', 'M5S 2E5', 'US', '2', '1526356800', '7'
'2', '2', 'designation', '40 Willcocks St', 'Ottawa', 'BC', 'M5S 2E5', 'CA', '1', '1526356800', '3'
'3', '2', 'credit types', '85 St George St', 'Toronto', 'AL', 'M5S 2E5', 'US', '2', '1540008000', '3'
'4', '1', 'association', '46 muriel ave', 'St. John', 'NB', 'M5M 2L2', 'US', '1', '1526356800', '4'
'5', '1', 'designation', '10 king street', 'Toronto', 'ON', 'M5S 2E5', 'CA', '2', '1526529600', '9'

现在,您可以注意到,第一个表目前没有任何值,我希望在更新的基础上使用一个内部join语句自动更新我的表。在以下方面:

UPDATE exp_credit_tracker_designation
INNER JOIN exp_credit_tracker_assoc ON exp_credit_tracker_designation.assocaition_id = exp_credit_tracker_assoc.id
SET exp_credit_tracker_assoc.id = exp_credit_tracker_designation.assocaition_id

对我来说,这可能是更快的方式来填充我的全新表和互动。
我不确定这是否可能,甚至它是否有意义。
我将等待一个关于在这些情况下应遵循的方法的好建议。

yvgpqqbh

yvgpqqbh1#

你说你想更新 exp_credit_tracker_designation 包含来自另一个表的数据的表,即使 exp_credit_tracker_designation 没有任何数据在它已经,这是不可能的更新语句
update语句改变了现有的数据,因为那里已经没有数据了,所以没有什么需要更新的,至少我是这样解释你的问题的。
如果另一个表没有数据,则必须使用insert语句将数据从一个表输入到另一个表。这很简单,你可以这样说:

insert into table1 (column1, column2, column3)
select column1, column2, column3 from table2

既然你说你是mysql的新手,你可能会注意到我没有使用mysql的传统语法

Insert into foo (bar, biz, bad)
values (X, Y, Z)

这是因为您正在从另一个表中提取数据。

相关问题