2011-06-15 30 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

相關問題