Using EXISTS with MySQL
I have this simple query that works on all other database systems, but fails with MySQL:
UPDATE 开发者_如何学Cpoints p
SET p.userid = 5224
WHERE p.userid = 2532
AND NOT EXISTS (
SELECT 1
FROM points q
WHERE q.userid = 5224
AND q.game = p.game
)
I get the following error message:
#1093 - You can't specify target table 'p' for update in FROM clause
Is there any workaround?
You can't alias the main table in an UPDATE clause. This should work:
UPDATE points
SET userid = 5224
WHERE userid = 2532
AND NOT EXISTS (
SELECT 1
FROM points q
WHERE q.userid = 5224
AND q.game = points.game
)
Use:
UPDATE POINTS
SET userid = 5224
WHERE userid = 2532
AND game NOT IN (SELECT q.game
FROM POINTS q
WHERE q.userid = 5224)
精彩评论