【问题标题】:Moving data between tables on a specific condition在特定条件下在表之间移动数据
【发布时间】:2019-10-02 11:02:02
【问题描述】:

我有两张桌子。在表 Order 中,我有一个名为 customer_name 的列。我将创建一个名为 customer_id 的列,而 customer_name 将被删除。

在我删除该列之前,我们必须查看表 Customer。 Customer 有一列名称与 Order 中的 customer_name 相匹配。我想找到可以让我将 ID 从 Customer 移动到 Order 中的 customer_id 的 SQL 语法,条件是 Order.customer_name = Customer.name。

我正在尝试使用 postgresql 并且必须学习如何使用它,但即使使用常规 SQL 我也没有找到解决方案。

我试过了:

ALTER TABLE Order
SELECT INTO customer_id
id from Customer
WHERE Order.customer_name = Customer.name;

INSERT INTO Order (customer_id)
SELECT id
FROM Customer
WHERE Order.customer_name = Customer.name;

我遇到语法错误。

还有其他写条件的方法吗?还是因为pgadmin,我需要写一些其他的方式?

【问题讨论】:

  • 注意:ORDER 是 SQL 中的关键字,是一个非常糟糕的表名选择。
  • 您可能想要更新,而不是插入。

标签: sql postgresql


【解决方案1】:

你似乎想要这样的东西:

ALTER TABLE Orders ADD customer_id INT;

UPDATE Orders
    SET customer_id = c.id
    FROM Customers c
    WHERE o.customer_name = c.name;

注意:完成此操作后,您应该检查所有订单是否具有有效的 ID。然后您可能需要在之后清理名称不匹配的记录。

【讨论】:

  • 可能适用于同名客户
  • @angel.bonev 。 . .如果客户名称相同,则 OP 无法正确分配 id。
猜你喜欢
  • 2016-02-22
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多