0

我在这里有一个查询,它将返回不同的轨道 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 )

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

4

1 回答 1

1

您不能UPDATE在子查询中引用同一个表,请改用 a 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
于 2012-08-05T02:17:17.673 回答