【问题标题】:Update lines with data of the same table使用同一个表的数据更新行
【发布时间】:2018-06-28 22:21:52
【问题描述】:

我有一个名为 item_empresa 的全局表,在这个表中我有一些名为 preco、preco_1 的列,然后我们开始了。 这个 item_empresa 表有两个 ID:id_item 和 id_empresa 我必须更新 id_empresa 不同的表数据。例如:

UPDATE item_empresa SET
preco = (SELECT preco FROM item_empresa WHERE id_empresa = 1)
WHERE id_empresa = 2;

我需要一些可以将 id_empresa = 1 的 item_empresa 的 preco 数据“复制”到 id_empresa = 2 的 item_empresa 的 preco 数据的东西。 在表 item_empresa 的所有行中进行此更改。 谁能帮帮我?

【问题讨论】:

  • 你的 dbms 是什么?
  • 您的查询有什么问题?样本数据和预期结果也可能有所帮助。
  • 实际上我得到的错误是我的子查询返回了不止一行,使用这种类型的查询。
  • 预期类似: preco(item_empresa(id_empresa = 2)) 接收 preco(item_empresa(id_empresa = 1)) 的值
  • 如果 item_empresa 包含 id_empresa=1 的多行怎么办。在这种情况下,应该将哪一行的 preco 分配给 id_empresa = 2 的行

标签: sql postgresql sql-update


【解决方案1】:

我认为这里的问题是您的 SELECT 查询返回的不止一行。我不知道为什么,但您可能有多行具有相同的 id_empresa。 如果所有这些“重复”的行具有相同的值,您可能会发现使用 GROUP BY 条件很有用。

UPDATE item_empresa SET
preco = (SELECT preco FROM item_empresa WHERE id_empresa = 1 GROUP BY id_empresa)
WHERE id_empresa = 2;

如果行的值不相同,那么您将需要找到一种方法来选择您真正想要的行。尝试在 WHERE 调用中添加更多条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多