web-dev-qa-db-ja.com

DELETE FROM `table` AS` alias` ... WHERE `alias`.`column` ...なぜ構文エラーですか?

私はこれをMySQLで試しました:

DELETE FROM `contact_hostcommands_relation` AS `ContactHostCommand` WHERE (`ContactHostCommand`.`chr_id` = 999999) LIMIT 1

そして私はこれを手に入れます:

#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 'WHERE (`ContactHostCommand`.`chr_id` = 999999) LIMIT 1' at line 1

注:このクエリは自動的に生成され、条件はテーブルのエイリアスに基づいています。

このエラーが発生するのはなぜですか?

Where句でテーブルのエイリアスを使用する方法はありますか?

これはMySQL固有ですか?

30
Aalex Gabi

次のようなSQLを使用できます。

DELETE FROM ContactHostCommand 
USING `contact_hostcommands_relation` AS ContactHostCommand 
WHERE (ContactHostCommand.`chr_id` = 999999) 
LIMIT 1
31
Sarunas

@Matusと@CeesTimmermanがMSSQLについて言ったことは、MySQL 5.1.73でも機能します。

delete <alias> from <table> <alias> where <alias>.<field>...
33
Rafael Barros

MySQLのAS句でDELETEを使用することはできません。

DELETE FROM `contact_hostcommands_relation` WHERE (`chr_id` = 999999) LIMIT 1 
5
adrien