是否有限制
我的查询是:
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
子句中列出表名,以说明从。
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
选项不同)。