从内存表中删除MySQL,加入InnoDB表



我的查询是:

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表连接时从内存表中删除该删除?

是否有限制

当您在DELETE中使用JOIN时,您必须在DELETE子句中列出表名,以说明从。

中删除哪个表(s)
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子句之后列出表(这与JOIN子句中的USING选项不同)。

最新更新