我如何插入一个数字到MySQL,并有它自动增加的所有行的数字


How can I insert a number into MySQL and have it autoincrement that number for all rows?

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

我想做一些类似的事情:

$cid = 549
increment $CID +1 x 218
insert into contacts (cid = $cid)

我知道我说得太远了,但希望你能明白。

编辑似乎很多人都认为我只需要自动增加我的CID行,我已经有了。问题是我正在使用几个excel电子表格导入一些客户数据,如果我让auto increment这样做,它们不会匹配。

为了使这个工作,我必须说"取第一行并使CID = 549,然后下一行需要是550,下一个551,以此类推。必须是这些数字(549-767)

您已经插入了需要修复的损坏数据,因此您有多种方法来完成此操作。你可以手动更新它,这是可行的,但如果你犯了错误,可能会变得混乱。

另一种方法是利用MySQL的auto-increment字段为缺失的标识符创建一个查找表。

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 ->缺失CID的表。

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

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

由于_cid_fixTEMPORARY表,当您关闭与MySQL服务器的连接时,它将被销毁,因此不需要手动删除它。请注意,其他连接将无法看到它,所以如果您试图使用其他窗口或工具检查它,它将不存在。