sql-内连接更新多行

Posted

技术标签:

【中文标题】sql-内连接更新多行【英文标题】:sql- Inner join to update multiple rows 【发布时间】:2022-01-16 17:56:32 【问题描述】:

我需要使用 user_id 列将表 B 的除法列更新到表 A。我需要为 laravel 项目运行 sql 查询来更新表 A。 场景如下 - 表A:

user_id  division_id assessment_id posting_id
   2                  2             2
   3          6       55            3
   5          7       6             67

表 B:

user_id  division_id  remarks
   2        8          a
   3        4          b
   3        7          c
   3        8          d
   5        9          f

加入后的期望输出- 表A:

 user_id  division_id assessment_id posting_id
   2        8          2             2 
   3        6          55            3
   3        4
   3        7
   3        8
   5        7          6             67
   5        9

我尝试运行以下查询:

   $result = DB::statement("UPDATE A t1
                        INNER JOIN B t2
                            ON t1.user_id = t2.user_id
                     SET t1.division_id = t2.division_id;");

但此查询并未针对相同的 user_id 将多行插入到表 A 中。 我只需要将表 B 中的 division_id 列复制到表 A 中。 获得所需输出的查询应该是什么?

【问题讨论】:

UPDATE 没有插入。您似乎在寻找 UNION 但为什么 tableA 中的 2/null 在您的结果中消失了? 请您帮忙进行 INSERT 查询以更改表 A。使用任何循环是否更好? @P.鲑鱼 为什么tableA中的2/null在你的结果中消失了? 如果A表有空值,B表有数据;那么空值应该由表 B 的数据更新。@P.Salmon 表 a 上有任何索引吗? 【参考方案1】:
foreach(TableB::all('user_id'  ,'division_id') as $data)
    TableA::create($data);

TableA::where('division_id',null)->delete();

【讨论】:

以上是关于sql-内连接更新多行的主要内容,如果未能解决你的问题,请参考以下文章

SQL 内连接 2 个具有多列条件的表并更新

sql左连接 右连接 内连接 外连接都是啥

SQL内连接与外连接用法与区别

sql 内连接和外连接的是啥意思?

SQL中内连接和外连接的区别

sql server 2005 中的内连接和外连接 怎么理解?