gpt4 book ai didi

mysql - 如何从另一个表中获取记录的ID?

转载 作者:行者123 更新时间:2023-11-30 21:22:12 24 4
gpt4 key购买 nike

我在 MySQL 中有一个数据库,我想迁移它,稍微改变一下表的结构。

我是 MySQL 的新手,所以请多多包涵。

我有以下表格:

地址

  • 地址编号
  • 地址(例如:55 街)
  • 邮政编码
  • 城市
  • 国家

CustomersOld

  • 客户编号
  • 姓名
  • 账单地址
  • billing_zip_code
  • 账单城市
  • billing_country

我想将客户数据迁移到具有以下结构的新表中

新客户

  • 客户编号
  • billing_address_id(地址表的外键)

因此,我想从 CustomersOld 表中获取 4 个账单地址字段并执行此操作:

  1. 检查 Addresses 表是否包含与帐单地址字段匹配的记录。

    1.1。如果是,则只返回AddressID。

    1.2。如果否,则创建该记录,并返回 AddressID。

  2. 在 CustomersNew 表的 address_id 字段中插入 AddressID。

通常,我使用这个简单的脚本来迁移表:

INSERT INTO CustomersNew
SELECT * FROM CustomersOld

我想我必须执行一些嵌套的 SELECT 和 JOIN:

INSERT INTO CustomersNew
(customer_id, billing_address_id)
SELECT
customer_id,
-- SELECT/JOIN ... (something like that, in order to get the address_id)
FROM CustomersOld

你能帮我为每个客户获取合适的 billing_address_id 吗?

谢谢

最佳答案

这需要分两步完成。首先创建所有的 Addresses 记录:

INSERT INTO Addresses (address, zip_code, city, country)
SELECT DISTINCT billing_address, billing_zip_code, billing_city, billing_country
FROM CustomersOld;

然后通过将此表与 CustomersOld 连接来创建所有 CustomersNew 记录

INSERT INTO CustomersNew (customer_id, billing_address_id)
SELECT c.customer_id, a.address_id
FROM CustomersOld AS c
JOIN Addresses AS a ON c.billing_address = a.address AND c.billing_zip_code = a.zip_code AND c.billing_city = a.city AND c.billing_country = a.country

关于mysql - 如何从另一个表中获取记录的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40164569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com