简体   繁体   English

MySQL更新与子查询联接

[英]Mysql update with subquery join

I have the update query: 我有更新查询:

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

But i got the error: Error Code: 1054. Unknown column 'cash_billings_bills_articles.cashbillingbill_id' in 'on clauseError Code: 1054. Unknown column 'cash_billings_bills_articles.cashbillingbill_id' in 'on clause' 0.000 sec 但是我得到了错误: Error Code: 1054. Unknown column 'cash_billings_bills_articles.cashbillingbill_id' in 'on clauseError Code: 1054. Unknown column 'cash_billings_bills_articles.cashbillingbill_id' in 'on clause' 0.000 sec

UPDATE Tables Structures: UPDATE表结构:

在此处输入图片说明

Your join condition seems to be wrong .In your query you try to join tables articles_pricehistory and cash_billings_bills on condition 您的加盟条件似乎是错误的。在你的查询您尝试加入表articles_pricehistorycash_billings_bills条件

cash_billings_bills_articles.cashbillingbill_id = cash_billings_bills.cashbillingbill_id

where cash_billings_bills.cashbillingbill_id column should be compared with some column of articles_pricehistory table not cash_billings_bills_articles table . 其中cash_billings_bills.cashbillingbill_id列应该用一些列作比较articles_pricehistorycash_billings_bills_articles

Your query should be more like 您的查询应该更像

UPDATE cash_billings_bills_articles 
SET 
    cash_billings_bills_articles.cashbillingbillarticle_cost = (SELECT 
            articles_pricehistory.articlepricehistory_cost
        FROM
            articles_pricehistory
                LEFT JOIN
            cash_billings_bills_articles ON cash_billings_bills_articles.article_id = articles_pricehistory.article_id
                LEFT JOIN
            cash_billings_bills ON cash_billings_bills_articles.cashbillingbill_id = cash_billings_bills.cashbillingbill_id
        WHERE
            articles_pricehistory.articlepricehistory_date <= cash_billings_bills.cashbillingbill_date
        ORDER BY articles_pricehistory.articlepricehistory_date DESC
        LIMIT 1)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM