使用表别名时出错

时间:2011-06-29 10:10:26

标签: mysql alias

为什么我在DELETE QUERY中使用表别名但在SELECT QUERY

中没有出现错误

这个工作正常

SELECT * FROM tablename a WHERE a.fieldname > 10

这个显示错误消息

DELETE FROM tablename a WHERE a.fieldname > 10

错误讯息:

  

#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在'a WHERE a.field .....

附近使用正确的语法

3 个答案:

答案 0 :(得分:1)

尝试:

DELETE a FROM tablename a WHERE a.fieldname > 10

(当然,别名在单个表语句中几乎没用。)


回答第二个问题

多表DELETE的语法如下:

DELETE t1
FROM table1 AS t1
LEFT JOIN table2 t2 ON t1.foo_id=t2.foo_id
WHERE t1.foo1 > 0

即,你必须告诉你要从哪个表中删除行(在单个表语句中它不是必需的,因为只涉及一个表)。

语法记录在http://dev.mysql.com/doc/refman/5.5/en/delete.html

答案 1 :(得分:0)

猜猜是什么......你不能在DELETE使用别名。完全停止。故事结束。

这将有效:

DELETE FROM tablename WHERE fieldname > 10;

答案 2 :(得分:0)

通过查询中的少量修改,我得到了相同的错误。 所以你的查询应该是:

DELETE a FROM tablename a WHERE a.fieldname > 10;