【问题标题】:Update a Mysql table from Select从 Select 更新 Mysql 表
【发布时间】:2021-09-25 02:00:17
【问题描述】:

我有以下选择:

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 查询呢?

标签: mysql insert-update


【解决方案1】:

您需要在 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

【讨论】:

    【解决方案2】:

    在进行更新查询时对值使用子查询:

    update my_table set value = (select value from other_table where condition)
    

    但你应该确保子查询只返回 1 行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多