我有三张table
仪器操作
InstrumentStatusId StatusDataKeyId
1 0
2 0
3 0
4 0
5 0
仪器状态
Id Name
1 ACTIVE
2 INACTIVE
3 MAINTENANCE
4 SERVICE
5 BROKEN
Jmeter 状态数据键
Id Name
1 MAINTENANCE
2 SERVICE
3 BROKEN
``` `InstrumentStatusId` 在 `InstrumentOperation` 引用中条目的id `InstrumentStatus` . 与相同 `StatusDataKeyId` 以及 `InstrumentStatusDataKey` .
我想要那个 `StatusDataKeyId` 中的列 `InstrumentOperation` 要填充的表 `Id` 中的条目 `InstrumentStatusDataKey` 正确地对应于 `Id` 中的条目 `InstrumentStatus` 如果存在匹配的名称,则保留 `0` . 例如,答案是:
仪器操作
InstrumentStatusId StatusDataKeyId
1 0
2 0
3 1
4 2
5 3
我提出的查询只有在 `InstrumentStatusId` 是 `1` 除了一行。。。
UPDATE InstrumentOperation SET StatusDataKeyId = (
SELECT
InstrumentStatusDataKey.Id
FROM (SELECT * FROM InstrumentStatusDataKey) AS InstrumentStatusDataKey
JOIN InstrumentStatus ON InstrumentStatus.Name = InstrumentStatusDataKey.Name
JOIN (SELECT * FROM InstrumentOperation) AS InstrumentOperation ON InstrumentOperation.InstrumentStatusID = InstrumentStatus.Id
) WHERE InstrumentOperation.InstrumentStatusId != (SELECT Id FROM InstrumentStatus WHERE InstrumentStatus.Name = "ACTIVE");
我得到的错误是 `Subquery returns more than 1 row` .
1条答案
按热度按时间2uluyalo1#
如果我正确地遵循这个逻辑,你只需要
join
将表放在一起并设置相应的键: