Na stronie:
http://bugs.mysql.com/bug.php?id=1038
Można przeczytać:
mysql> CREATE TABLE a (a int, b int); Query OK, 0 rows affected (0.03 sec) mysql> CREATE TABLE b (a int, b int); Query OK, 0 rows affected (0.04 sec) mysql> INSERT INTO a VALUES (1,1),(2,1),(3,1); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> INSERT INTO b VALUES (1,1), (3,1); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> UPDATE a LEFT JOIN b ON a.a=b.a SET a.b=2, b.b=2 WHERE (a.b=1 AND b.b=1) OR b.a IS NULL; Query OK, 4 rows affected (0.01 sec) Rows matched: 5 Changed: 4 Warnings: 0 mysql> SELECT * FROM a; +------+------+ | a | b | +------+------+ | 1 | 2 | | 2 | 2 | | 3 | 2 | +------+------+ 3 rows IN SET (0.00 sec) mysql> SELECT * FROM b; +------+------+ | a | b | +------+------+ | 1 | 2 | | 3 | 1 | +------+------+ 2 rows IN SET (0.00 sec)
Na USENET znalazłem, że tego typu update, to znaczy dane z jednej tabeli do drugiej, można wykonywać w 4.0.1 ver. mysql; wykonałem aktualizacje do 4.1 i nadal mam błąd przy:
UPDATE a LEFT JOIN b ON a.a=b.a SET a.b=2, b.b=2 WHERE (a.b=1 AND b.b=1) OR b.a IS NULL;
ERROR 1064 (00000): Something is wrong in your syntax obok 'left join b on a.a=b
.a set a.b=2, b.b=2 where (a.b=1 and b.b=1) ' w linii 1
mysql>
Pomóżcie. Jak to zaaktualizować? Bo już mi ręce opadają

====
Zaintalowałem 4.0.4.
C:\usr\mysql6\bin>mysqld -V
mysqld Ver 4.0.4-beta-max-debug for Win95/Win98 on i32
C:\usr\mysql6\bin>mysql -V
mysql Ver 12.14 Distrib 4.0.4-beta, for Win95/Win98 (i32)
mysql> UPDATE a LEFT JOIN b ON a.a=b.a SET a.b=2, b.b=2 WHERE (a.b=1 AND b.b=1) OR b.a IS NULL; ERROR 1064: Something IS wrong IN your syntax obok 'left join b on a.a=b.a set a .b=2, b.b=2 where (a.b=1 and b.b=1) ' w linii 1 mysql>
Na http://dev.mysql.com/doc/mysql/en/UPDATE.html
Czytamy:
"Starting with MySQL 4.0.4, you can also perform UPDATE operations that cover multiple tables:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;"
Ech ;/