31

我用 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 特有的吗?

4

3 回答 3

45

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

delete <alias> from <table> <alias> where <alias>.<field>...
于 2014-11-14T17:37:56.603 回答
31

您可以像这样使用 SQL:

DELETE FROM ContactHostCommand 
USING `contact_hostcommands_relation` AS ContactHostCommand 
WHERE (ContactHostCommand.`chr_id` = 999999) 
LIMIT 1
于 2013-04-02T07:12:53.430 回答
5

您不能ASDELETEMySQL 的子句中使用:

DELETE FROM `contact_hostcommands_relation` WHERE (`chr_id` = 999999) LIMIT 1 
于 2012-05-07T15:14:49.230 回答