我有一张看起来像这样的桌子
ID | NAME | VALUE |
----------------------------
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | |
4 | Test | |
1 | Test3 | VALUE3 |
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来更新值'Test2'和'Test',其中'VALUE'列中其他行的数据具有相同的'NAME'(ID在此处不唯一,ID的复合键和NAME使行唯一).例如,我正在寻找的输出是:
ID | NAME | VALUE |
----------------------------
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
Run Code Online (Sandbox Code Playgroud)
如果它在另一个表中我会没事的,但是我不知道如何使用相同的NAME值引用当前表中的不同行.
更新
修改manji查询后,下面是我用于工作解决方案的查询.谢谢大家!
UPDATE data_table dt1, data_table dt2
SET dt1.VALUE = dt2.VALUE
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
Run Code Online (Sandbox Code Playgroud)
man*_*nji 69
试试这个:
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
Run Code Online (Sandbox Code Playgroud)
Gus*_*son 16
这是我的去处:
UPDATE test as t1
INNER JOIN test as t2 ON
t1.NAME = t2.NAME AND
t2.value IS NOT NULL
SET t1.VALUE = t2.VALUE;
Run Code Online (Sandbox Code Playgroud)
编辑:删除多余的t1.id != t2.id条件.