【问题标题】:SQL update table using values from another tableSQL 使用另一个表中的值更新表
【发布时间】:2018-12-16 22:45:31
【问题描述】:

过几天就要进行sql测试了。我们不能使用计算机,所以一切都是在没有它的帮助下编写的。

我在这个练习中遇到了一些问题。

目标是使用表product 中的值更新表purchase 的值。如果product.production_date 高于sold.purchase_date,则需要将purchase_date 设置为等于production_date

这就是我所做的:

update purchase
set purchase_date=product.production_date
from product
where purchase.purchase_date<product.production_date;

我可以这样做吗?我的意思是,同时使用 update 和 from 命令?

谢谢。

【问题讨论】:

  • 是的。没有问题。!
  • 我删除了不兼容的数据库标签。请仅使用您真正使用的数据库进行标记。此外,您的查询毫无意义。样本数据、期望的结果以及对您正在做什么的解释都会有所帮助。
  • 不应该把购买的产品和生产的产品以某种方式联系起来,比如共享一个共同的ID吗?我不确定您的查询是否符合您的要求...

标签: sql join sql-update


【解决方案1】:

请通过使用两个表的公共列重新分配 id 来尝试以下查询。

update purchase
set purchase_date = (SELECT product.production_date 
                   from product 
                  where purchase.id = product.id)
WHERE EXISTS (SELECT 1
          FROM product
          WHERE purchase.id = product.id
            and purchase.purchase_date < product.production_date);

【讨论】:

    【解决方案2】:

    是的,你可以。 我认为这是一个错字:你写了updade 而不是update

    【讨论】:

    • 这是真的!谢谢。
    【解决方案3】:

    您必须编写一个内部查询以使其工作,否则您可能会收到不正确的 SQL 错误。例如:

    update purchase pur
    set pur.purchase_date=(select pro.production_date
    from product pro
    where pur.purchase_date<pro.production_date);
    

    更多详情请查看:Update statement with inner join on Oracle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多