我有一张这样的表:
business_positions
id code description_1 description_2
出于某种原因,填充description_1
列并且description_2
列为空,前半部分填充错误,后半部分则相反:
id |code|description_1|description_2
900| 1|Senior Manager|(empty)
901| 1|President|(empty)
902| 1|Board Member|(empty)
903| 2|Another Description|(empty)
...
2000| 1|(empty)|Desc
2001| 1|(empty)|Desc2
2002| 1|(empty)|Desc3
2003| 2|(empty)|Desc4
...
我想更新表,让两个描述都填入同一行,通过code
字段匹配行并遵守插入顺序(即没有排序)。 ids
始终是唯一的。我追求的结果是:
id |code|description_1|description_2
900| 1|Senior Manager|Desc
901| 1|President|Desc2
902| 1|Board Member|Desc3
903| 2|Another Description|Desc4
然后删除后半部分,使用2000年的ID。
我该怎么做?
试着没有运气:
UPDATE
business_positions A
LEFT JOIN business_positions B ON (A.code=B.code )
SET
A.description_2 = B.description_2
WHERE
A.description_2=''
AND
B.description_2<>''
AND
A.id<>B.id
答案 0 :(得分:1)
使用以下查询进行更新
update business_positions t1 inner join business_positions t2
on t2.id=t1.id+1100
set t1.description_2=t2.description_2
然后使用以下查询删除不需要的行
delete from business_positions where id>1999;
答案 1 :(得分:0)
试试这个
;with CTE
AS
(
select description_2 from business_positions where description_1 = " "
)
update A
Set description_2 = B.description_2
FROM business_positions A
INNER JOIN CTE B
ON A.description_2 = " "
DELETE business_positions
where description_1 = " "
select * From business_positions