如果条件

时间:2016-03-09 19:49:17

标签: mysql sql excel vba

  • 环境: MS Access
  • 技术领域: SQL /查询
  • 情况:

    我有2个表,tblA,tblB。 tblA包含9000个产品信息==> SKU,UPC tblB包含制造1500个产品Info ==> sku,UPC 问题是tblA上的UPC有:空白,损坏的UPC和良好的UPC。 我怎么能:

    1. 如果tblA!UPC为空白,则从tblB查找并更新好的UPC
    2. 确定tblA上的UPC是否被损坏(例如:812440000000,8450 + 11),然后在tblB上查找匹配的UPC。如果未找到匹配项,请返回“空白”
    3. 如果在tblB上找不到匹配的UPC,则在tblA上保持良好的UPC

我希望在tblA上更新好的UPC,而不是仅仅将其视为查询。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

我创建了一些这样的样本数据(如果样本数据的设置不正确,请告诉我):

create table tblA
(
    sku varchar(25),
    upc varchar(25)
)
go
create table tblB
(
    sku varchar(25),
    upc varchar(25)
)
go

insert into tblA values ('sku1', null)
insert into tblB values ('sku1', 'correct upc #1!')
insert into tblA values ('sku2', 'CORRUPT UPC!')
insert into tblB values ('sku2', 'correct upc #2!')
insert into tblA values ('sku3', 'CORRUPT UPC WITH NO MATCH!')

然后我运行这些更新命令:

首先,关于你的观点#1:

update tblA set upc = tblB.upc
from tblA
inner join tblB on tblA.sku = tblB.sku and tblA.upc is null

然后为你的观点#2:

update tblA set upc = isnull(tblB.upc, '')
from tblA
left join tblB on tblA.sku = tblB.sku 
where tblA.upc like 'CORRUPT%' 
-- you'll need to specify the actual criteria that makes a upc corrupted,
-- and replace the "like 'CORRUPT%'" clause!

之后,这个查询:

select * from tblA

给你:

--sku   upc
--sku1  correct upc #1!
--sku2  correct upc #2!
--sku3  <blank>

tblA中没有tblB中相应sku的任何(未损坏的)upc将保持不变。这会让你走上正轨吗?