从另一个表更新一个表中的值
Posted
技术标签:
【中文标题】从另一个表更新一个表中的值【英文标题】:Updating Values in one table from another table 【发布时间】:2012-08-02 13:08:36 【问题描述】:我在这里有一个查询,它将返回不同的轨道 ID
注意:我是从另一个表中查询的。
SELECT t.track_id FROM tracks t , account_x_track axt,accounts a WHERE axt.track_id = t.track_id AND axt.account_id = a.id AND a.id = 2
然后我想做的是前一个表中的所有 Id 将用于更新另一个表(特别是 Tracks 表),因为从前一个表中检索的 id 来自 Tracks 表。我在想这样的事情。
UPDATE tracks
set visible = 3
WHERE visible in( SELECT t.track_id FROM tracks t , account_x_track axt,accounts a WHERE axt.track_id = t.track_id AND axt.account_id = a.id AND a.id = 2 )
但它似乎不起作用。任何想法我将如何处理这个困境? 另请注意,第一个查询查询多到多张表
【问题讨论】:
【参考方案1】:您不能在子查询的UPDATE
中引用同一个表,请改用JOIN
:
UPDATE tracks a
JOIN (
SELECT axt.track_id
FROM account_x_track axt
JOIN accounts a ON axt.account_id = a.id AND a.id = 2
) b ON a.track_id = b.track_id
SET a.visible = 3
【讨论】:
@user962206 尝试自己运行 subselect 查询,看看它会产生什么。它只生成account
2
包含的track_id
。然后我们将这个子选择加入到UPDATE
语句中的tracks
表中,条件是id 等于子选择中派生的id,因此我们只更新帐户2
包含的那些轨道。以上是关于从另一个表更新一个表中的值的主要内容,如果未能解决你的问题,请参考以下文章