mysql - 将查询结果插入到具有连接的同一个表中

时间:2016-07-15 12:27:31

标签: mysql sql-update left-join mariadb

我一直使用这个网站来查找我的问题的答案,但这是我第一次问一个。

我有两个表,想要查询两个表并将结果插入表1中的两列。这样的事情:

SELECT a.column1 from table1 a LEFT Join ( SELECT 'column1' from 'table2' ) AS a ON where a.column1 like '%column1.table2%';

然后基本上将结果插入表1的column5和column6

我知道这不是正确的,因为它不起作用而且它不会更新任何东西。为了测试,我在运行update命令之前运行select语句进行验证。说出我需要的另一种方式是:

如果table1中的column1与table2中的column1相似,则使用table2中column2的相应条目更新table1中的column5,并使用table1中的column7更新table1中的column6,并使用table2中column3中的相应条目;

我意识到这不是最好的解释,但这是我能解释我想要的最佳方式。如果需要更多信息,请提出问题,我会尽力解释。

感谢您的任何输入。

1 个答案:

答案 0 :(得分:0)

在MySQL中,您可以使用表列表中的连接在单个更新语句中执行多表更新:

update t1 inner join t2 on t1.column1 like concat('%',t2.column1, '%')
set t1.column5=t2.column2, t1.column6=t2.column7

然而,使用like不一定是最好的主意,因为来自t2的多于1个记录可以匹配t1内的相同记录,因此单个t1记录可以在单次运行期间多次更新。

你应该通过t2中的哪个字段更新哪些t1字段的描述是不准确的,不能真正告诉那里的逻辑。