假设我们从CSV文件中获取以下数据:
account_number balance customer name
100 500.00 GERN BLANSTON
101 800.00 GERN BLANSTON
102 200.00 OPRAH WINFREY
这代表两个属于Gern Blanston的帐户和一个属于Oprah Winfrey的帐户。现在假设我们有一个customer
表和一个account
表。我们可以假设只使用两个INSERT
语句插入数据:
INSERT INTO customer
(name)
VALUES
('GERN BLANSTON'),
('OPRAH WINFREY')
和
INSERT INTO account
(account_number, balance, customer_id)
VALUES
(100, 500.00, ???),
(101, 800.00, ???),
(102, 200.00, ???)
如果我们知道Gern Blanston和Oprah Winfrey的ID,我们当然可以在第二个INSERT
语句中使用这些ID,它会正常工作。但无论如何,我们需要获得这些ID。
我的问题:有没有一种快速的方法可以找出或至少跟踪每个插入客户的ID?单独插入每一行然后获取LAST_INSERT_ID()
对我来说太慢了(每个CSV文件中最多有65,000个帐户)。每次插入新帐户时查找客户ID也太慢了。
或者,如果您想回避这个特定问题并推荐一个不同的解决方案,我也会对此持开放态度。我正在使用MySQL。
答案 0 :(得分:0)
在完成插入后添加另一列account
列,其中存储customer_name
,update account set customer_id=(select customer.customer_id from customer where customer.customer_name=account.customer_name;
希望这种替代方法可以简化复杂性
另外,将customer table
更改为customer_id