【问题标题】: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 )

但它似乎不起作用。任何想法我将如何处理这个困境? 另请注意,第一个查询查询多到多张表

【问题讨论】:

    标签: mysql sql phpmyadmin foreign-keys many-to-many


    【解决方案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 包含的那些轨道。
    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2018-06-11
    • 1970-01-01
    • 2021-10-16
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多