Sql语法:根据不同表中的值更新表中的所有值

Sql语法:根据不同表中的值更新表中的所有值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有三个表,我想将特定类型的所有值更新为相同的值: 表1: id,ValueType 表2: id,值 表3: id,fkValueTypeId,fkValueId fkValueType引用了表1中的ID。fkValue引用了表2中的ID 我正在尝试将所有速度值设置为相同的值: i、 e 我要做的是将表中所有速度项的速度更新为“55”,以便表2如下所示: Table2: 0, 55 1, 55 2, 55 3, 55 4, 18 5, 18 6, blue 7, black 8, orange

我有三个表,我想将特定类型的所有值更新为相同的值:

表1: id,ValueType

表2: id,值

表3: id,fkValueTypeId,fkValueId

fkValueType引用了表1中的ID。fkValue引用了表2中的ID

我正在尝试将所有速度值设置为相同的值:

i、 e

我要做的是将表中所有速度项的速度更新为“55”,以便表2如下所示:

Table2:
0, 55
1, 55
2, 55
3, 55
4, 18
5, 18
6, blue
7, black
8, orange
9, 55
10, 55
11, 55
希望这是有意义的。我不确定语法,可以使用循环来完成,但想知道是否有更好的方法(我肯定有!)

多谢各位

UPDATE table2
SET table2.Value = 55
FROM table2
JOIN table3 ON table3.fkValueId = table2.id
WHERE table3.fkValueTypeId = 0
编辑:不知道SQL server的语法缺点:)


编辑:不知道SQL server的语法缺点:)

重写@hobodave的答案:

UPDATE table2
SET Value = 55
FROM table2
JOIN table3 ON table3.fkValueId = table2.id
WHERE table3.fkValueTypeId = 0

改写@hobodave的答案:

UPDATE table2
SET Value = 55
FROM table2
JOIN table3 ON table3.fkValueId = table2.id
WHERE table3.fkValueTypeId = 0

抱歉,有点离题了,但这看起来像一个EAV模式。桌子不应该是这样的吗?稍后您可能会遇到严重的性能问题。这是基于我上一个问题的答案,我想更新度量表PropertyType中的所有度量值。名称为单个值:抱歉,有点离题,但这看起来像是EAV模式。桌子不应该是这样的吗?您以后可能会遇到严重的性能问题。这是基于我上一个问题的答案,我想更新度量表PropertyType中的所有度量值。将名称改为单个值:这与我尝试的结果类似,我得到以下错误:关键字“JOIN”附近的语法不正确。添加“from table2”在JOIN开始工作之前。谢谢您的帮助。我当时正在使用标准SQL编写,不知道SQL server的缺点。:)这与我所尝试的类似,我得到了以下错误:关键字“JOIN”附近的语法不正确。在JOIN之前添加“FROM table2”使这项工作正常。谢谢您的帮助。我当时正在使用标准SQL编写,不知道SQL server的缺点。:)我更改了语法以匹配此项,但仍然“关键字“JOIN”附近的语法不正确”。在联接消除错误之前从表2中添加,但我仍在尝试使其工作。好的,在联接之前添加“从表2中”使其工作。谢谢你的帮助。我更改了语法以与此匹配,但仍然“关键字“JOIN”附近的语法不正确”。在联接消除错误之前从表2中添加,但我仍在尝试使其工作。好的,在联接之前添加“从表2中”使其工作。谢谢你的帮助。