[英]Copy table id from one column to another where column data matches between tables
I have two tables, Fruits and Meals, and one of the columns in Meals is a varchar(100) with the fruits in them. 我有两张桌子,水果和餐,而Meals中的一列是varchar(100),里面有水果。 I am changing this so that the column is instead the id of the fruit from the Fruits table, and I would like to set this by comparing the two tables and grabbing the id from the fruits table where the fruit columns match.
我正在更改这个,以便该列代替Fruits表中的水果的id,我想通过比较两个表并从水果表中的水果列匹配的id中获取id来设置它。
Table: Fruits
id | fruit
1 apple
2 banana
3 orange
Table: Meals
id | Meal | Fruit
1 xxxx apple
2 xxxx apple
3 xxxx orange
4 xxxx banana
5 xxxx orange
6 xxxx orange
7 xxxx apple
I've tried the following script, but I get the following error. 我已经尝试了以下脚本,但是我收到以下错误。
Update product_attribute set control_caption =
(
Select DISTINCT T1.control_caption_id from control_caption T1
INNER Join product_attribute T2
On T1.control_caption = T2.control_caption
Where T1.control_caption = T2.control_caption
)
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Depends on your RDBMS, but this should work for SQL Server: 取决于您的RDBMS,但这适用于SQL Server:
Update pa
set pa.control_caption = cc.control_caption_id
From product_attribute pa
Join control_caption cc On
cc.control_caption = pa.control_caption
The Update Query can be simplified and a Join may be used instead of a subquery running the select statement. 可以简化Update Query,并且可以使用Join而不是运行select语句的子查询。
Update P
Set P.Control_Caption = C.Control_Caption_ID
From Product_Attribute P
join Control_Caption C on C.Control_Caption= P.Control_Caption
This runs on both SQL Server & Oracle. 这可以在SQL Server和Oracle上运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.