从另一个表更新一个表中的值

时间:2012-08-05 02:04:21

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

我在这里有一个查询将返回不同的轨道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都将用于更新另一个表(特别是The 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 )

但它似乎不起作用。任何想法我将如何处理这个dillema? 另请注意,FIrst查询会查询许多表到mnay表

1 个答案:

答案 0 :(得分: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