使用基于另一个填充表的INNER JOIN UPDATE语句更新空表

时间:2018-05-11 19:45:40

标签: mysql sql-update inner-join

重要: 我真的是使用MYSQL的新手。

我必须表,我试图使用更新语句而不是使用insert语句来更新表,基于内连接查询上的另一个表。

我的第一张表如下:

exp_credit_tracker_designation

id association_id designation_name

基于另一个表:

exp_credit_tracker_assoc:

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'

现在,正如您所注意到的,第一个表目前没有任何值,我希望在我的更新基础上使用INNER 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

对我而言,这可能是填充我的全新桌子并与之互动的更快捷方式。

我不确定它是否可行,或者它是否有意义。

我将等待关于在这些情况下遵循的方法的一个很好的建议。

1 个答案:

答案 0 :(得分:1)

你说你想用另一个表中的数据更新exp_credit_tracker_designation表,即使exp_credit_tracker_designation中没有任何数据,这对于更新语句是不可能的

更新语句会更改现有数据,并且由于此处没有数据,因此无需更新,至少我会如何解释您的问题。

如果另一个表中没有数据,则必须使用insert语句将数据从一个表输入到另一个表。这很容易实现 你可以这样做一个声明:

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

既然你说你是MySQL新手,你可能会注意到我没有使用

的传统语法
Insert into foo (bar, biz, bad)
values (X, Y, Z)

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