user1851950
user1851950

Reputation: 65

I can´t use alias in sql delete

I tried execute this sql sentence

delete 
        from reclamo r
        where exists ( select 1 from reclamo r
                        join cliente c on r.cod_cliente = c.cod_cliente
                        join localidad l on c.cod_localidad = l.cod_localidad
                        where l.descripcion = 'San Justo');

for remove all the claims made by customers of the town of 'San justo' but it says "Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'r where exists ( select 1 from reclamo r join cliente c on r.cod_cliente' at line 2" anyone know how I can fix these errors?

sqlfiddele here: http://sqlfiddle.com/#!2/b2771

Upvotes: 4

Views: 2390

Answers (2)

Dan Bracuk
Dan Bracuk

Reputation: 20804

Don't use an alias. This is equivalent logic and will work fine.

delete from reclamo
where cod_cliente in 
(select cod_cliente
from cliente c join localidad l on c.cod_localidad = l.cod_localidad
where l.descripcion = 'San Justo');

Upvotes: 1

Wrikken
Wrikken

Reputation: 70490

If you're using aliases... ÿou have to tell what to actually delete (probably this is because table aliases are usually only needed in multiple table syntax... you could just omit the alias altogether):

mysql> delete from tablename r;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'r' at line 1
mysql> delete r from tablename r;
Query OK, 0 rows affected (0.00 sec)

See als the manual:

Note
If you declare an alias for a table, you must use the alias when referring to the table: DELETE t1 FROM test AS t1, test2 WHERE ...

Upvotes: 4

Related Questions