2011-06-15 109 views
2

我有两个表具有以下值如何通过两个表列的closet match来更新表,并用sql替换一个表中的一个值?

Table A   Table B 
PartNo   PartNo 
3AL9723AA  3AL9723AAA01 
3AL7881BA  3AL7881BAA02 
1AB5677FC  1AB5677FCD02 

现在,我想这两个PARTNO值高达9个字符作比较,如果9个字符匹配,则替换表B与PARTNO表A而忽略了PARTNO值或删除最后三个字符,

请任何人都可以帮我写这个问题的查询。

+0

*衣柜比赛*?在壁橱打网球比赛? (对不起 - 只是忍不住....) – 2011-06-15 04:59:33

回答

1

在MS SQL:

-- Setup 

declare @TableA table(PartNo varchar(20)) 

declare @TableB table(PartNo varchar(20)) 

insert @TableA 
values 
    ('3AL9723AA'), 
    ('3AL7881BA'), 
    ('1AB5677FC') 

insert @TableB 
values 
    ('3AL9723AAA01'), 
    ('3AL7881BAA02'), 
    ('1AB5677FCD02') 

-- Query 

update b 
set PartNo = a.PartNo 
from @TableA a 
    join @TableB b on 
     left(a.PartNo, 9) = left(b.PartNo, 9) 

-- Result check 

select * 
from @TableB 
+0

感谢您的回复。有用。 – Lissy 2011-06-15 03:33:45

+1

@Lissy - 如果有帮助,不要忘记标记答案。谢谢。 – 2011-06-15 03:34:33

2

在MySQL:

UPDATE tableA a, tableB b 
SET b.PartNo=a.PartNo 
WHERE LEFT(a.PartNo, 9) = LEFT(b.PartNo, 9); 
+0

非常感谢你这有效:) – Lissy 2011-06-15 03:33:20

+1

你很受欢迎 - 如果你可以标记为回答,那会很棒:) – 2011-06-15 03:54:12

相关问题