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