问题描述
我有以下选择:
select a.TX,b.PSP_map as PSP_map_DC from psp_DC_CO_consol a
left join psp_DC_CO_consol b on b.TX=a.TX
where a.source='CORE' and a.PSP_map is NULL and a.PSP<>'' and a.TX<>'' and a.StatusTX=1
and b.PSP_map is not NULL
我现在需要使用表 psp_DC_CO_consol 中我选择的“PSP_map_DC”列更新 PSP_map 列,并且仅更新来自我选择的 source='CORE' 和 TX= TX 的行。
我试过没有成功。
解决方法
您需要在 UPDATE
语句中进行自联接,就像您的查询一样,但它应该是 INNER
联接,因为您有条件 b.PSP_map IS NOT NULL
:
UPDATE psp_DC_CO_consol a
INNER JOIN psp_DC_CO_consol b ON b.TX = a.TX
SET a.PSP_map = b.PSP_map
WHERE a.source='CORE' AND a.PSP_map is NULL AND a.PSP <> ''
AND a.TX <> '' AND a.StatusTX = 1 AND b.PSP_map IS NOT NULL
,
在进行更新查询时对值使用子查询:
update my_table set value = (select value from other_table where condition)
但是你应该确保子查询只返回 1 行