Mysql 具有单个查询的多个delete语句

Mysql 具有单个查询的多个delete语句,mysql,sql,Mysql,Sql,给定两个表,photos和keywords,其中photos.ID=keywords.photos,如何在一个查询中从两个表中删除相同的行?照片表只有一条记录,而关键字有9条对照片记录的引用 我试过了 DELETE FROM photos INNER JOIN keywords ON photos.ID = keywords.photo WHERE photos.ID = 262; 我得到一个错误1064,说明存在一个错误,从内部连接关键字开始,一直到语句的其余部分 但是,当我将DELET

给定两个表,photos和keywords,其中photos.ID=keywords.photos,如何在一个查询中从两个表中删除相同的行?照片表只有一条记录,而关键字有9条对照片记录的引用

我试过了

DELETE FROM photos 
INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262;
我得到一个错误1064,说明存在一个错误,从内部连接关键字开始,一直到语句的其余部分

但是,当我将DELETE语句转换为SELECT*时


,返回一组9行。

您需要添加要删除的表的名称

DELETE photos 
FROM photos 
     INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262;

您需要添加要删除的表的名称

DELETE photos 
FROM photos 
     INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262;

不能从多个表中显式删除


但是,如果关键字.photos与photos.id是外键,并且是on delete cascade,则当您从照片中删除时,它们将被删除

您不能从多个表中显式删除


但是,如果keywords.photos与photos.id是外键的,并且是on delete cascade,那么当您从照片中删除时,它们将被删除

这就成功了!为什么表限定符需要包含在此语句中,而不是出于正常的删除用途?因为它涉及多个表,所以您需要指定删除记录的位置:那就成功了!为什么表限定符需要包含在此语句中,而不是出于正常的删除用途?因为它涉及多个表,所以您需要指定删除记录的位置:幸运的是,我必须为这个表使用MyISAM引擎,这意味着没有外键支持。因此,在我的代码中实现同样的逻辑是必要的。不幸的是,我必须为这个表使用MyISAM引擎,这意味着没有外键支持。因此,在我的代码中实现相同逻辑的必要性。