You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JOIN和SELECT更新MySQL的TblRemHp.tmp字段?

解决方案:用查询结果更新TblRemHp的tmp字段

你可以通过以下两种常用方式实现需求,根据你使用的数据库类型选择合适的写法:

方法1:使用UPDATE JOIN(推荐,适合MySQL、SQL Server等)

直接通过JOIN关联所有表,一次性完成更新,效率更高:

UPDATE TblRemHp
JOIN TblCategorias 
  ON TblRemHp.id_categoria = TblCategorias.id
JOIN TblSubcategorias 
  ON TblRemHp.id_subcategoria = TblSubcategorias.id 
  AND TblSubcategorias.id_categoria = TblCategorias.id
JOIN TblSub1 
  ON TblSub1.id_subcategoria = TblSubcategorias.id 
  AND TblRemHp.id_filtro1 = TblSub1.c1
SET TblRemHp.tmp = TblSub1.id;

说明

原查询中的LEFT JOIN因为WHERE子句的等值判断,实际已经等价于INNER JOIN,直接改用INNER JOIN可以减少无效的数据关联,提升执行效率。

方法2:使用子查询(通用型,适配多数数据库)

如果你的数据库对UPDATE JOIN支持有限,可以用子查询写法:

UPDATE TblRemHp
SET tmp = (
  SELECT TblSub1.id 
  FROM TblCategorias 
  JOIN TblSubcategorias 
    ON TblSubcategorias.id_categoria = TblCategorias.id
  JOIN TblSub1 
    ON TblSub1.id_subcategoria = TblSubcategorias.id
  WHERE TblRemHp.id_categoria = TblCategorias.id 
    AND TblRemHp.id_subcategoria = TblSubcategorias.id 
    AND TblRemHp.id_filtro1 = TblSub1.c1
)
WHERE EXISTS (
  SELECT 1 
  FROM TblCategorias 
  JOIN TblSubcategorias 
    ON TblSubcategorias.id_categoria = TblCategorias.id
  JOIN TblSub1 
    ON TblSub1.id_subcategoria = TblSubcategorias.id
  WHERE TblRemHp.id_categoria = TblCategorias.id 
    AND TblRemHp.id_subcategoria = TblSubcategorias.id 
    AND TblRemHp.id_filtro1 = TblSub1.c1
);

说明

  • 子查询会为每个TblRemHp的匹配行找到对应的TblSub1.id并更新tmp字段
  • WHERE EXISTS子句用来过滤掉没有匹配结果的行,避免这些行的tmp被设置为NULL(如果不需要这个过滤,可以去掉该部分)

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:17:44