4

このSQL文を実行してみました

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');

「サン フスト」の町の顧客によるすべての主張を削除しますが、「エラー コード: 1064。SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 'r where exists ( select 1 from reclamo r join cliente c on r.cod_cliente' at line 2" の近くで、これらのエラーを修正する方法を知っている人はいますか?

ここのsqlfiddlele:http://sqlfiddle.com/#!2/b2771

4

2 に答える 2

4

エイリアスを使用している場合... 実際に何を削除するかを指定する必要があります (おそらくこれは、テーブル エイリアスは通常、複数のテーブル構文でのみ必要になるためです... エイリアスを完全に省略できます):

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)

マニュアルも参照してください:


テーブルのエイリアスを宣言する場合は、テーブルを参照するときにエイリアスを使用する必要があります: DELETE t1 FROM test AS t1, test2 WHERE ...

于 2013-07-31T22:38:16.473 に答える
1

エイリアスを使用しないでください。これは同等のロジックであり、正常に動作します。

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');
于 2013-07-31T22:42:35.050 に答える