单个查询的多个删除语句

时间:2013-01-05 01:46:51

标签: mysql sql

给定两个表photoskeywords,其中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 *
SELECT * FROM photos
INNER JOIN keywords ON photos.ID = keywords.photo
WHERE photos.ID = 262;

,我得到一组9行返回。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

您无法从多个表中明确删除。

但是,如果keywords.photos通过“on delete cascade”对photos.id进行外键操作,则从照片中删除时会删除它们