DELETE FROM `table` AS `alias` ... WHERE `alias`.`column` ... why syntax error?

32,248

Solution 1

You can use SQL like this:

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

Solution 2

What @Matus and @CeesTimmerman said about MSSQL, works in MySQL 5.1.73 too:

delete <alias> from <table> <alias> where <alias>.<field>...

Solution 3

You cannot use AS in a DELETE clause with MySQL :

DELETE FROM `contact_hostcommands_relation` WHERE (`chr_id` = 999999) LIMIT 1 
Share:
32,248
Aalex Gabi
Author by

Aalex Gabi

Updated on December 01, 2020

Comments

  • Aalex Gabi
    Aalex Gabi over 3 years

    I tried this with MySQL:

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

    And I get this:

    #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
    

    Note: This query is automatically generated and conditions are based on table aliases.

    Why I get this error?

    Is there any way to use table aliases in where clause?

    Is this MySQL specific?