从 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 行
我有以下 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 行