如何修复使用嵌套查询更新Sample表Column_A值的SQL语法错误
修复UPDATE语句语法错误并实现需求
你的SQL出现语法错误,核心原因是部分数据库不支持UPDATE ... FROM这种语法结构,而且这个需求完全不需要额外的子查询关联,直接在SET子句中计算目标值即可。
简化后的正确SQL(适用于Oracle、SQLite等支持SUBSTR+INSTR的数据库)
UPDATE Sample SET Column_A = SUBSTR(Column_B, INSTR(Column_B, '-') + 1);
如果你使用MySQL,可以用更简洁的SUBSTRING_INDEX函数
UPDATE Sample SET Column_A = SUBSTRING_INDEX(Column_B, '-', -1);
说明
原SQL的问题在于过度复杂:你不需要通过子查询生成临时表再关联更新,因为每一行的Column_B都能直接拆分出需要的第二部分内容,直接在SET里调用字符串函数就能完成更新逻辑。
执行后表数据会变为:
| Column_A | Column_B |
|---|---|
| 02 | 01-02 |
| 04 | 03-04 |
| 06 | 05-06 |
内容的提问来源于stack exchange,提问作者Shreya B
相关产品推荐
相关产品推荐

