1

给定两个表photoskeywordswhere photos.ID = keywords.photos,如何在单个查询中从两个表中删除相同的行?该photos表有一条记录,而对该记录keywords有 9 次引用photos

我试过了

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

我收到一个错误 1064,说明从INNER JOIN keywords语句的其余部分开始并继续存在错误。

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

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

,我得到一组 9 行返回。

4

2 回答 2

3

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

DELETE photos 
FROM photos 
     INNER JOIN keywords ON photos.ID = keywords.photo 
WHERE photos.ID = 262;
于 2013-01-05T01:48:33.363 回答
1

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

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

于 2013-01-05T01:50:45.210 回答