基于ID关联将单元格值移至对应行的SQL实现求助
解决方案:通过ID关联迁移Column B值
原SQL问题分析
你写的SQL语句中,WHERE Table_Name.ID = Table_Name.ID +2是逻辑矛盾的——没有任何整数ID能满足“自身等于自身加2”的条件,因此查询结果全为NULL。
方法1:新增列展示关联的B值(推荐用于查询场景)
使用自连接将ID为X的行与ID为X+2的行关联,新增列获取对应B值:
SELECT t1.ID, t1.Column_A, t1.Column_B, t2.Column_B AS Associated_Column_B FROM Table_Name t1 LEFT JOIN Table_Name t2 ON t2.ID = t1.ID + 2
- 左连接(
LEFT JOIN)确保即使某行没有对应的ID+2行,也不会丢失原有数据,此时Associated_Column_B会显示为NULL。
方法2:填充原Column B的NULL值(用于更新表数据)
如果需要直接把B值填充到ID=X行的Column B中,用带关联子查询的UPDATE语句:
UPDATE Table_Name t1 SET t1.Column_B = ( SELECT t2.Column_B FROM Table_Name t2 WHERE t2.ID = t1.ID + 2 ) WHERE t1.Column_B IS NULL;
WHERE t1.Column_B IS NULL限定只更新原本为NULL的行,避免覆盖已有数据。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

