web-dev-qa-db-fra.com

DELETE FROM `table` AS` alias` ... WHERE `alias`.`column` ... pourquoi une erreur de syntaxe?

J'ai essayé cela avec MySQL:

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

Et je reçois ceci:

#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

Remarque: Cette requête est générée automatiquement et les conditions sont basées sur les alias de table.

Pourquoi je reçois cette erreur?

Existe-t-il un moyen d'utiliser des alias de table dans la clause where?

Est-ce spécifique à MySQL?

30
Aalex Gabi

Vous pouvez utiliser SQL comme ceci:

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

Ce que @Matus et @CeesTimmerman ont dit à propos de MSSQL, fonctionne également dans MySQL 5.1.73:

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

Vous ne pouvez pas utiliser AS dans une clause DELETE avec MySQL:

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