gotchaModeratepending
PostgreSQL UPDATE with JOIN -- different syntax than MySQL
Viewed 0 times
UPDATE JOINUPDATE FROMsyntax differenceMySQL migrationcross-database
postgresqlmysql
Error Messages
Problem
MySQL UPDATE ... JOIN syntax does not work in PostgreSQL. Migrating queries between databases fails with syntax errors.
Solution
PostgreSQL uses UPDATE ... FROM ... WHERE for joins, not UPDATE ... JOIN. The syntax is fundamentally different.
Why
SQL standards do not define UPDATE with JOIN. Each database invented its own syntax. PostgreSQL uses FROM clause, MySQL uses JOIN clause.
Code Snippets
UPDATE JOIN syntax differences
-- MySQL: UPDATE with JOIN
UPDATE orders o
JOIN users u ON o.user_id = u.id
SET o.status = 'vip'
WHERE u.tier = 'premium';
-- PostgreSQL: UPDATE with FROM
UPDATE orders
SET status = 'vip'
FROM users
WHERE orders.user_id = users.id
AND users.tier = 'premium';
-- PostgreSQL: RETURNING (bonus -- MySQL can't do this)
UPDATE orders
SET status = 'shipped'
WHERE id = 42
RETURNING *;Revisions (0)
No revisions yet.