MariaDB 10.3.32中如何用查询结果批量更新匹配ts的表字段
解决MariaDB关联更新表字段的问题
你之前尝试的是PostgreSQL风格的UPDATE ... FROM语法,但MariaDB不支持这种写法,需要使用UPDATE ... JOIN ... SET的标准关联更新语法。
以下是正确的更新语句:
UPDATE avg1h JOIN ( SELECT ts, MAX(pwr) AS peak FROM ( SELECT ts - INTERVAL EXTRACT(SECOND FROM ts) SECOND - INTERVAL EXTRACT(MINUTE FROM ts) MINUTE AS ts, CASE WHEN pwr < 0 THEN 0 ELSE pwr END as pwr FROM avg15m ) AS peak15m GROUP BY ts ) AS peaks ON avg1h.ts = peaks.ts SET avg1h.pwr_peak = peaks.peak;
说明:
- 通过
JOIN关键字将avg1h表与你已验证正确的peaks子查询结果关联,匹配条件为两个表的ts字段相等 - 关联完成后,直接将子查询中的
peak值赋值给avg1h表的pwr_peak字段 - 该语句会批量更新所有
ts匹配的行
内容的提问来源于stack exchange,提问作者Wannes
相关产品推荐
相关产品推荐

