私はこれを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固有ですか?
次のようなSQLを使用できます。
DELETE FROM ContactHostCommand
USING `contact_hostcommands_relation` AS ContactHostCommand
WHERE (ContactHostCommand.`chr_id` = 999999)
LIMIT 1
@Matusと@CeesTimmermanがMSSQLについて言ったことは、MySQL 5.1.73でも機能します。
delete <alias> from <table> <alias> where <alias>.<field>...
MySQLのAS
句でDELETE
を使用することはできません。
DELETE FROM `contact_hostcommands_relation` WHERE (`chr_id` = 999999) LIMIT 1