如何拼接VARCHAR并提取日期年份?多表关联更新字段求助
解决方案
1. 日期年份提取优化
针对maindb.COL_2的YYYY-MM-DD格式日期,推荐使用YEAR()函数提取年份——相比字符串截取,它对日期类型/标准格式字符串的兼容性更强,不易出错:
YEAR(maindb.COL_2)
2. 修正后的更新SQL
假设你原有的关联规则(engine.COL_3匹配maindb.COL_1 + "-" + 年份)是正确的,完整的更新语句如下:
UPDATE maindb JOIN engine ON engine.COL_3 = CONCAT(maindb.COL_1, "-", YEAR(maindb.COL_2)) SET maindb.COL_3 = engine.COL_4
注意事项
- 表名大小写:原SQL中混用
maindb和Maindb,部分数据库(如MySQL在区分大小写的操作系统上)会判定为不同表,请保持统一。 - 先验证再更新:执行更新前,建议先通过SELECT语句确认关联结果是否符合预期,避免误操作:
SELECT maindb.COL_1, YEAR(maindb.COL_2) AS 提取的年份, engine.COL_3 AS engine匹配字段, engine.COL_4 AS 待更新的百分比 FROM maindb JOIN engine ON engine.COL_3 = CONCAT(maindb.COL_1, "-", YEAR(maindb.COL_2))
(附相关截图:
)
内容的提问来源于stack exchange,提问作者Thavisack VRCHDV
相关产品推荐
相关产品推荐

