Mysql 具有单个查询的多个delete语句
给定两个表,photos和keywords,其中photos.ID=keywords.photos,如何在一个查询中从两个表中删除相同的行?照片表只有一条记录,而关键字有9条对照片记录的引用 我试过了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
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引擎,这意味着没有外键支持。因此,在我的代码中实现相同逻辑的必要性。