我有一张表 -
set_id, id, ...
0, 1, a, b, ...
1, 1, c, d, ...
2, 1, e, f, ...
0, 2, g, h, ...
1, 2, i, j, ...
2, 2, k, l, ...
其中(set_id,id)是主键
我想用set_id 0替换除set_id之外的所有字段,并使用set_id 1替换等效条目(如果存在)。所以上面的表将成为 -
set_id, id, ...
0, 1, c, d, ... <
1, 1, c, d, ...
2, 1, e, f, ...
0, 2, i, j, ... <
1, 2, i, j, ...
2, 2, k, l, ...
有没有一种理智的方法在SQL中执行此操作或我是否需要使用一些客户端代码?
由于
答案 0 :(得分:1)
如果我正确阅读,您希望将set_id=1
行中的数据复制到set_id=0
的行id
。UPDATE
这样做的一种方法是使用FROM
做一个简单的UPDATE mytable
SET field_a = ms.field_a, field_b = ms.field_b
FROM mytable ms
WHERE mytable.id=ms.id AND mytable.set_id=0 AND ms.set_id=1
;
{{1}}
请注意,您需要列出要移动的字段,所有字段的“行复制”不是自动的。