我在 Oracle 中有两个表,定义如下:
位置数据
loc_id
capacity
loc_type
用户数据
loc_id
custom001
如果满足以下限制,我想要做的是将 location.capacity 中的内容复制到 user.custom001 中:
custom001 <> 容量
loc_type IN ('A','B')
容量不为 NULL 或 0
根据我在 Stack Exchange 上找到的其他一些查询,我开发了这个:
UPDATE user u
SET u.custom001 =
(SELECT l.capacity
FROM location l
WHERE u.loc_id = l.loc_id
AND l.capacity <> u.custom001
AND l.loc_type IN ('110','210')
AND l.capacity IS NOT NULL
AND l.capacity <> 0)
WHERE exists (select capacity from location l WHERE l.loc_id = u.loc_id)
但它不尊重约束,并且更新了用户表中的几乎每一行,其中大多数都带有 NULL。
我需要从这里去哪里?