我有两个表Item
和Measure
。
项目:
ItemName | Unit | Extra5
------------|-----------|--------
bolt | PCS |
nut | M2 |
Screw | M3 |
Slug | JM |
测量:
ItemName | Unit | QtyPerMeasure
------------|-----------|--------------
bolt | PCS | 1
bolt | M2 | 2
bolt | M3 | 3
bolt | JM | 4
nut | PCS | 11
nut | M2 | 22
nut | M3 | 33
nut | JM | 44
Screw | PCS | 111
Screw | M2 | 222
Screw | M3 | 333
Screw | JM | 444
Slug | PCS | 1.1
Slug | M2 | 2.2
Slug | M3 | 3.3
Slug | JM | 4.4
我需要以查询根据Extra5
选择相应值的方式更新表Item
中的字段Unit
。
结果应类似于:
ItemName | Unit | Extra5
------------|-----------|--------
bolt | PCS | 1
nut | M2 | 22
Screw | M3 | 333
Slug | JM | 4.4
到目前为止我尝试过的:
UPDATE
Item
SET
Extra5 =
CASE (SELECT Unit FROM Item)
WHEN 'PCS' THEN SELECT Unit FROM Measure WHERE yksikko = 'PCS'
WHEN 'JM' THEN SELECT Unit FROM Measure WHERE yksikko = 'JM'
WHEN 'M2' THEN SELECT Unit FROM Measure WHERE yksikko = 'M2'
WHEN 'M3' THEN SELECT Unit FROM Measure WHERE yksikko = 'M3'
FROM
Item a
INNER JOIN Measure b
ON a.ItemName = b.ItemName
这给我一个错误:Msg 156, Level 15, State 1, Line 16. Incorrect syntax near the keyword 'SELECT'.
我一直在想CASE
是否毕竟是正确的方法。
我的方向完全错误吗?
任何帮助将不胜感激。
答案 0 :(得分:1)
ggd)
说明:查询将通过匹配Item和Measure表的itemname和unit列值来更新Extra5列。
答案 1 :(得分:0)
我认为您只是想这样做。
public class User {
private final String name = "John";
}
答案 2 :(得分:0)
您可以尝试一下。在这里,您可以使用inner join
获得所需的结果。然后只需根据需要对其进行更新。由于Item_name
和Unit
是相同的,并且两者的结合使得唯一密钥得以更新。
UPDATE ITEM
SET ITEM.Extra5 = MEASURE.QtyPerMeasure
FROM Item AS ITEM INNER JOIN Measure AS MEASURE
ON ITEM.Unit = MEASURE.Unit AND ITEM.ItemName = MEASURE.ItemName