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

MySQL中用另一表GROUP BY结果更新/插入空表t1的uid列

哦,我明白你的问题了——你的t1是空表,用UPDATE语句当然没效果啦,因为UPDATE是用来修改已经存在的行的,空表根本没有可更新的记录呀!

问题分析

你之前执行的UPDATE JOIN语句失效的核心原因:t1没有任何行数据,UPDATE操作只能针对已存在的记录进行修改,JOIN后找不到匹配的行,所以不会产生任何数据变化。

解决方案

根据你的需求(把t2按uid分组后的结果处理到t1的uid列),分两种场景给出对应方案:

场景1:t1是空表,仅需插入去重后的uid

直接用INSERT INTO ... SELECT语句,把t2分组去重后的uid批量插入到t1中:

INSERT INTO t1 (uid)
SELECT uid FROM t2 GROUP BY uid;

这条语句会把t2中去重后的1114732条uid数据全部插入到t1的uid列里,完全匹配你的需求。

场景2:t1可能已有数据,需要插入新uid+更新已有uid(可选)

如果后续t1可能存在重复的uid,你需要实现“存在则更新,不存在则插入”的逻辑,这时候需要先给t1的uid列添加唯一约束(主键或唯一索引),然后用INSERT ... ON DUPLICATE KEY UPDATE语法:

-- 先给t1的uid列加唯一索引(如果还没有的话)
ALTER TABLE t1 ADD UNIQUE INDEX idx_uid (uid);

-- 插入或更新
INSERT INTO t1 (uid)
SELECT uid FROM t2 GROUP BY uid
ON DUPLICATE KEY UPDATE 
  uid = VALUES(uid); -- 如果uid已存在,这里更新操作其实无变化,仅避免报错

如果t1还有其他字段需要更新(比如最后更新时间),可以把更新语句改成对应字段,比如:

ON DUPLICATE KEY UPDATE 
  last_update = NOW();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:17