我使用的是MS SQL Server.我有两张桌子:
Table1
存储关于单个对象编号(Object_id
)、其属性编号(Prop_id
)和该属性的值(Value
)的信息.
示例
Object_id | Prop_id | Value |
---|---|---|
1 | 55 | 980 |
1 | 76 | |
2 | 55 | 970 |
2 | 76 | |
3 | 55 | 960 |
3 | 76 |
Table 2
包含对象属性的值:
NUM | Name |
---|---|
980 | ABC |
970 | DEF |
960 | HIJ |
我需要用表2中的值更新表1.我需要在索引为76的属性的"Value"列中放入"name".两个表的连接应由表1中属性55的"值"字段和表2中的"Num"字段连接.
最后,我想要得到的是:
Object_id | Prop_id | Value |
---|---|---|
1 | 55 | 980 |
1 | 76 | ABC |
2 | 55 | 970 |
2 | 76 | DEF |
3 | 55 | 960 |
3 | 76 | HIJ |
请帮我写一个能给出想要的结果的查询!
我已经try 了几个SQL查询,但它们要么根本不更新表,要么只替换数据样本中的第一个值.
我的try 是:
UPDATE Table1
SET Table1.Value = name1.name
FROM (SELECT Table2.name
FROM Table1
JOIN Table2 ON Table2.num = Table1.Value
AND Table1.Prop_id = 55) AS name1
WHERE Table1.Prop_id = 76
此try 更新表中的值,但只将SELECT
查询中的第一个值插入所有行(即,属性为76的所有行中的ABC值).