Ms Ms替换问题

时间:2010-09-10 19:58:04

标签: database ms-access

因此,我必须使用6000行重复更新数据库。重复项是所有共享公共号码的公司。我的问题是我一次只更换一两个字段,即2009年提供的公司网站,但他们在2010年没有提供。这就是需要更换的全部内容。我是一名新手,我正在手工做所有的线路,这让我想到了暴力。我只需要知道是否可以自动执行此过程。我知道我可以为此编写代码,如果2010的值为null,则需要替换它。任何帮助都会很棒。如果你需要更多关于这个问题的信息,我也会在附近。

1 个答案:

答案 0 :(得分:0)

在评论中,您提供了此示例数据(我已创建字段名称):

  CompanyName CompanyYear  Amount   Website         Contact
  starbucks   2009         100$     starbucks.com   matt bucky
  starbucks   2010         200$     null            null

既然你说公司名称匹配,就像这样:

  UPDATE tblCompany INNER JOIN tblCompany AS C2 ON tblCompany.CompanyName = C2.CompanyName
  SET tblCompany.Website = C2.Website
  WHERE tblCompany.Website Is Null AND C2.Website Is Not Null
     AND tblCompany.CompanyYear=2010 AND C2.CompanyYear=2009;

这假定您要使用2009年记录中的数据更新2010年记录,而每个公司每年只记录一条记录。

要更新联系人姓名,您将再次运行查询,适当地更改SET语句和WHERE子句:

  UPDATE tblCompany INNER JOIN tblCompany AS C2 ON tblCompany.CompanyName = C2.CompanyName
  SET tblCompany.Contact = C2.Contact
  WHERE tblCompany.Contact Is Null AND C2.Contact Is Not Null
     AND tblCompany.CompanyYear=2010 AND C2.CompanyYear=2009;

如果存在可能包含有用数据的旧记录,则可以编写一些带有子查询的复杂SQL,这些子查询可以一次完成所有操作,但我只需要对同一SQL的多次运行进行编写,首先比较2010到2009年,然后到2008年,再到2007年,等等。最终,将不再有任何空记录。

(这似乎更像是StackOverflow问题,而不是ServerFault问题,但我知道什么?我永远无法弄清楚属于哪里)