从表 1 中选择某列并使用 Where 子句条件插入到表 2 中的某列

Posted

技术标签:

【中文标题】从表 1 中选择某列并使用 Where 子句条件插入到表 2 中的某列【英文标题】:Select Certain Column from Table1 and Insert to Certain Column in Table2 with Where Clause Conditions 【发布时间】:2019-03-15 06:17:42 【问题描述】:

表 1

|Id|Category_Id|Type_Id|Code|
+--+-----------+-------+----+
|1 |1          |1      |A   |
|3 |2          |1      |B   |
|4 |1          |3      |C   |

表2

|Id|Category_Id|Type_Id|Code_Id|
+--+-----------+-------+-------+    
|1 |1          |1      |NULL   |
|3 |2          |1      |NULL   |
|5 |9          |7      |NULL   |

如您所见,Table2 中的“Code_Id”列为 NULL。我需要使用 Table1 中“Id”列中的值更新该列,条件是 Table1 中“Category_Id”和“Type_Id”列中的值与 Table2 中“Category_Id”和“Type_Id”列中的值匹配。

我该怎么做呢?谢谢你,期待你的帮助。

【问题讨论】:

【参考方案1】:

使用加入更新

update t2 set code_id=t1.id
from table2
join table1 t1 on t1.type_id=t2.type_id and t1.category_id=t2.category_id

【讨论】:

谢谢。这行得通。我试图接受这个答案,但网站一直告诉我,我可以在 5 分钟内接受答案。无论如何,谢谢你的热心帮助。 :)【参考方案2】:

使用连接

UPDATE t2
SET Code_Id = t1.Id
FROM Table2 t2
JOIN Table1 t1 on t2.Type_Id=t1.Type_Id and t2.Category_Id=t1.Category_Id

【讨论】:

【参考方案3】:

它必须像集合一样在所有条件下都需要别名,因为在多个表中可能是相同的列名而不是出现错误。

UPDATE A 
set A.code_id = B.id
FROM table2 A
INNER JOIN table1 B on B.type_id=A.type_id and B.category_id=A.category_id

【讨论】:

以上是关于从表 1 中选择某列并使用 Where 子句条件插入到表 2 中的某列的主要内容,如果未能解决你的问题,请参考以下文章

在 where 子句中使用子查询从表中选择第二大日期

按确切数字选择 where 子句

5.WHERE 子句

SQL Where 子句详解

三.SQL WHERE 子句(where)

如何使用 join 和 where 子句从表中删除? [复制]