【问题标题】:mysql - insert results of query into same table with joinsmysql - 使用连接将查询结果插入到同一个表中
【发布时间】:2016-07-15 12:27:31
【问题描述】:

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

我有两个表,想查询这两个表并将结果插入表 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

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

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

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

感谢您的任何意见。

【问题讨论】:

    标签: mysql sql-update left-join mariadb


    【解决方案1】:

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

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

    但是,使用 like 不一定是最好的主意,因为 t2 中的多个记录可能与 t1 中的同一记录匹配,因此单个 t1 记录可能在一次运行期间更新多次。

    您对哪些 t1 字段应由 t2 中的哪个字段更新的描述不准确,无法真正说明那里的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-04
      • 2014-08-17
      • 2013-10-28
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多