我需要更新一些表的记录,我尝试使用以下命令:
UPDATE auction a
JOIN (SELECT bidding_price, user_id, auction_id FROM bid_account WHERE auction_id = a.auctionID ORDER BY bidpack_buy_date DESC LIMIT 1) ult_lance_a
SET a.auc_final_price=ult_lance_a.bidding_price, a.buy_user=ult_lance_a.user_id
WHERE a.auctionID=ult_lance_a.auction_id;
但是,我得到以下错误:
# 1054 - Column 'a.auctionID' unknown in 'where clause'
我做错了什么?
以下是命令的返回: SELECT bidding_price, user_id, auction_id FROM bid_account WHERE auction_id = XXX ORDER BY bidpack_buy_date DESC LIMIT 1
投标价格=6.23
用户id=1720
拍卖id=1818
在 auction
表中,有以下列:
最终拍卖价格
投标价格
拍卖ID
有多个记录,但列的记录是相同的:auction\u id和auctionid。
我需要的是获取 bid_account
表,并将值复制到 auction
table。
2条答案
按热度按时间wfveoks01#
可能有更好的方法来表达您的更新,但是如果您想使用相关的子查询,那么您可能需要将它们直接放到
SET
条款:实际上,我认为我们仍然可以使用updatejoin语法编写查询。由于表很大,您可以尝试连接到临时表(代替匹配视图):
aiazj4mn2#
您的主要问题是在join中缺少“on”子句,并且试图使用子查询的“where”子句完成相同的任务。
a、 auctionid在子查询的上下文中不存在
SELECT bidding_price, user_id, auction_id FROM bid_account WHERE auction_id = a.auctionID ...
,所以它抛出了一个错误。不如这样试试:
我用来设置测试的代码: