DELETE FROM`table` AS`alias` ... WHERE`alias``column` ...为什么语法错误?

时间:2021-10-22 09:07:13

I tried this with MySQL:

我用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?

有没有办法在where子句中使用表别名?

Is this MySQL specific?

这个MySQL是否具体?

3 个解决方案

#1


29  

You can use SQL like this:

您可以像这样使用SQL:

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

#2


24  

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

@Matus和@CeesTimmerman关于MSSQL的内容也适用于MySQL 5.1.73:

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

#3


5  

You cannot use AS in a DELETE clause with MySQL :

您不能在MySQL的DELETE子句中使用AS:

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

#1


29  

You can use SQL like this:

您可以像这样使用SQL:

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

#2


24  

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

@Matus和@CeesTimmerman关于MSSQL的内容也适用于MySQL 5.1.73:

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

#3


5  

You cannot use AS in a DELETE clause with MySQL :

您不能在MySQL的DELETE子句中使用AS:

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