【问题标题】:UPDATE MySQL table based DATETIME Column更新基于 MySQL 表的 DATETIME 列
【发布时间】:2016-11-03 19:46:56
【问题描述】:

我有以下表格:cash_billings_bills_articlesarticles_pricehistory

我需要根据他的基准日期中的articles_pricehistory 更新cashbillingbillarticle_cost 列。逻辑是选择所有历史记录日期减去交易日期cashbillingbill_date 并捕获所选过滤器的最近成本。

这是我想要的结果:

这是我尝试做的:

UPDATE cash_billings_bills_articles 
    LEFT JOIN articles_pricehistory USING(article_id)
    LEFT JOIN cash_billings_bills USING(cashbillingbill_id)
SET cash_billings_bills_articles.cashbillingbillarticle_cost = articles_pricehistory.articlepricehistory_cost
    WHERE cash_billings_bills.cashbillingbill_date >= articles_pricehistory.articlepricehistory_date;

【问题讨论】:

    标签: mysql sql database select


    【解决方案1】:

    我认为这是相关子查询:

    UPDATE cash_billings_bills_articles cbba 
        SET cbba.cashbillingbillarticle_cost = (SELECT ph.articlepricehistory_cost
                                                FROM articles_pricehistory ph JOIN
                                                     cash_billings_bills cbb
                                                     USING (cashbillingbill_id)
                                                WHERE ph.article_id = cbba.article_id AND
                                                     ph.articlepricehistory_date <= cbb.cashbillingbill_date
                                                ORDER BY ph.articlepricehistory_date DESC
                                                LIMIT 1
                                               );
    

    【讨论】:

    • 我在第 4 行遇到了一些语法问题
    • @JonathanEdgardo 。 . .当我添加join 时,我可能已经解决了这个问题。
    猜你喜欢
    • 2012-07-04
    • 2015-05-02
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多