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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用基于另一个填充表的INNER JOIN UPDATE语句更新空表相关的知识,希望对你有一定的参考价值。

重要提示:我真的是使用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

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

我不确定它是否有可能,甚至是否有意义。

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

答案

你说你想用另一个表中的数据更新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)

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

以上是关于使用基于另一个填充表的INNER JOIN UPDATE语句更新空表的主要内容,如果未能解决你的问题,请参考以下文章

INNER JOIN mysql 从一个表到另一个表,它基于相同 id 的倍数

mysql中inner join和outer join有啥区别?

如何从另一个 SQL 表中获取两个不同列的匹配数据:Inner Join 和/或 Union?

表值函数的 INNER JOIN 不起作用

来自同一个表的多个 INNER JOIN

表的基本查询语句及使用连表(inner joinleft join)子查询