我有一张包含数百万销售记录的表,如下所示:
CREATE TABLE `sales` (
`dollar_amount` INT NULL,
`transaction_date` DATE NULL,
`company_name` VARCHAR(45) NULL,
`company_id` INT NULL);
前三列填充了数据。我想将数据插入到company_id列中,该列将使用auto_incremented整数标识每个公司。我计划将company_id字段用作引用另一个包含每个公司详细信息的表的外键。许多公司都有多个事务,因此代码需要使用匹配的company_name将相同的company_id分配给sales表中的每一行。
有没有办法只使用MySQL?
答案 0 :(得分:1)
首先,我建议您创建company
表:
CREATE TABLE company (
company_id INT NOT NULL AUTO_INCREMENT,
company_name VARCHAR(45),
PRIMARY KEY(company_id));
然后从销售数据中插入公司:
INSERT INTO company (company_name)
SELECT distinct company_name
FROM sales;
最后,使用sales
更新您的join
表格,以获取company_id
:
UPDATE sales s
JOIN company c ON s.company_name = c.company_name
SET s.company_id = c.company_id;
您还应该从company_name
表中删除sales
字段,因为它现在存储在company
表中。
答案 1 :(得分:0)
要定义自动递增的整数,只需使用AUTO_INCREMENT
关键字。但是,如果将任何列定义为auto_increment,则还必须将该列设为主键。在这种情况下,为了使其成为其他地方的外键,这将是有意义的。
试试这个:
CREATE TABLE `sales` (
`dollar_amount` INT NULL,
`transaction_date` DATE NULL,
`company_name` VARCHAR(45) NULL,
`company_id` INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(company_id);