我的查询是:
DELETE FROM abc_memory INNER JOIN abc USING (abc_id) WHERE x < y
并且MySQL抱怨道:
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 'INNER JOIN abc USING (abc_id) WHERE x < y' at line 1
在MySQL中,既没有加入内存表和innodb表,也没有在加入两个普通表时删除。但是在使用InnoDB表加入内存表时是否有限制从内存表中删除?
答案 0 :(得分:1)
在JOIN
中使用DELETE
时,必须在DELETE
子句中列出表名,告诉它要从哪个表中删除。
DELETE abc_memory
FROM abc_memory
JOIN abc USING (abc_id)
WHERE x < y
这只会从abc_memory
表中删除。如果要从两个表中删除,请将其更改为DELETE abc_memory, abc
。
多表格语法
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]] ... FROM table_references [WHERE where_condition]
或:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[.*] [, tbl_name[.*]] ... USING table_references [WHERE where_condition]
您必须在DELETE
之后或USING
子句中列出表(这与USING
子句中的JOIN
选项不同。