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