使用同表同级的数据更新行
设想一个具有类似于以下结构的表:
ID | 名称 | 值 |
---|---|---|
1 | 测试 | VALUE1 |
2 | 测试2 | VALUE2 |
1 | 测试2 | NULL |
4 | 测试 | NULL |
1 | Test3 | VALUE3 |
您的任务是使用具有相同“NAME”的其他行的数据填充 NULL“VALUE”单元格(即“Test”和“Test2”应该继承其前身的值)。期望的结果是:
ID | NAME | VALUE |
---|---|---|
1 | 测试 | VALUE1 |
2 | 测试2 | VALUE2 |
1 | 测试2 | VALUE2 |
4 | 测试 | VALUE1 |
1 | Test3 | VALUE3 |
挑战在于引用同一行中的行共享特定“NAME”值的表。解决方案涉及使用 JOIN 语句:
UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') t1 SET t.VALUE = t1.VALUE WHERE t.ID = t1.ID AND t.NAME = t1.NAME
在此语句中,子查询 (T1) 提取具有非 NULL 和非空“VALUE”值的不同行。然后,主查询 (t) 在“ID”和“NAME”字段上与此子查询连接,以标识要更新的行。因此,空的“VALUE”单元格将填充具有相同“NAME”值的非空行中的相应值。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3