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 )

しかし、うまくいかないようです。このジレマをどのように処理しますか? また、最初のクエリは many to mnay テーブルをクエリすることに注意してください

4

1 に答える 1

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
于 2012-08-05T02:17:17.673 に答える