我需要将公司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_fix
是TEMPORARY
表,当您关闭与MySQL服务器的连接时,它将被销毁,因此不需要手动删除它。请注意,其他连接将无法看到它,所以如果您试图使用其他窗口或工具检查它,它将不存在。