从 Select 更新 Mysql table

Update a Mysql table from Select

我有以下 select:

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

我现在需要使用 table psp_DC_CO_consol 中我的 select 的 'PSP_map_DC' 列更新列 PSP_map 并且仅针对具有source='CORE' 和 TX= 来自我的 select.

的 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)

但是你应该确保子查询return只有 1 行