使用同表兄弟的数据更新行
设想一个具有类似于以下结构的表:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | NULL |
4 | Test | NULL |
1 | Test3 | VALUE3 |
您的任务是使用具有相同“NAME”的其他行的数据填充 NULL“VALUE”单元格(即“Test”和“Test2”应继承其前辈的值)。期望的结果是:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | 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”值的非空行中的相应值。
以上是如何使用共享相同名称的行中的数据更新表中的 NULL 值?的详细内容。更多信息请关注PHP中文网其他相关文章!