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

基于同表关联行的SQL UPDATE实现:同步同URL的download与filename

表数据批量更新SQL方案

核心逻辑

  • 先提取表中所有download = 1的记录,按url维度整理出每个url对应的标准文件名
  • 对目标行(同url、且download = 0的记录)做关联匹配
  • 匹配成功的行,统一将download字段设为1,filename替换为对应url的标准文件名
  • 没有任何download=1记录的url,完全保留原有数据不做修改

可直接执行的SQL

MySQL 环境

基础版本(适合同url下仅存在1条download=1记录的场景):

UPDATE your_table t
INNER JOIN (
    SELECT url, filename 
    FROM your_table 
    WHERE download = 1
) src ON t.url = src.url
SET 
    t.download = 1,
    t.filename = src.filename
WHERE t.download = 0;

兼容版本(适配同url下可能存在多条download=1记录的场景,避免关联多行报错):

UPDATE your_table t
INNER JOIN (
    SELECT url, MAX(filename) AS std_filename 
    FROM your_table 
    WHERE download = 1
    GROUP BY url
) src ON t.url = src.url
SET 
    t.download = 1,
    t.filename = src.std_filename
WHERE t.download = 0;

PostgreSQL / SQL Server 环境

UPDATE your_table t
SET 
    download = 1,
    filename = src.std_filename
FROM (
    SELECT url, MAX(filename) AS std_filename 
    FROM your_table 
    WHERE download = 1
    GROUP BY url
) src
WHERE t.url = src.url
  AND t.download = 0;

执行后校验

可用如下查询核对更新结果:

SELECT url, download, COUNT(*) AS row_cnt, MAX(filename) AS matched_filename
FROM your_table
GROUP BY url, download;

核对规则:

  • 原先存在download=1记录的url,分组结果中不会出现download=0的行,且所有行的filename值完全统一
  • 原本没有download=1记录的url,会完全保留原有download=0的行及对应filename

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 21:54:01