-3

我需要为 MySQL 数据库中的一组联系人分配公司 ID;联系人已经在数据库中,但他们缺少 CID(公司 ID)并且有 218 个联系人。

我希望按照以下方式做一些事情:

$cid = 549
increment $CID +1 x 218

insert into contacts (cid = $cid)

我知道我离题了,但希望你能明白。

编辑 似乎很多人都在想我只需要自动增加我已经拥有的 CID 行。问题是我正在使用一些 excel 电子表格导入一些客户数据,如果我让自动增量做到这一点,它们将不匹配。

为了使它起作用,我必须说“取第一行并使 CID = 549,然后下一行需要是 550,接下来是 551,依此类推。它们必须是那些数字 (549-767)

4

1 回答 1

1

您已插入需要修复的损坏数据,因此您有多种方法可以解决此问题。您可以手动更新它,这会起作用,但如果您犯了错误,这可能会变得混乱。

另一种方法是通过利用 MySQL 自动增量字段为缺少的标识符创建查找表。

CREATE TEMPORARY TABLE _cid_fix(
  cid INT AUTO_INCREMENT PRIMARY KEY,
  contact_id INT,
  INDEX idx_contact(contact_id)
) AUTO_INCREMENT=549;

这将创建一个自动增量为 549 的临时表。现在将缺少值的记录插入其中:

INSERT INTO _cid_fix (contact_id) SELECT id FROM contacts WHERE cid IS NULL

然后你有一个contact_id-> missing表CID

UPDATE contacts,_cid_fix SET contacts.cid=_cid_fix.id WHERE contacts.id=_cid_fix.contact_id

您可以调整 上的WHERE子句INSERT以匹配您需要的记录。

作为_cid_fix一个TEMPORARY表,当您关闭与 MySQL 服务器的连接时,它将被销毁,因此无需手动删除它。但是请注意,其他连接将无法看到它,因此如果您尝试使用不同的窗口或工具检查它,它就不会存在。

于 2013-06-20T14:25:58.330 回答