我正在尝试一次从几个表中删除。我做了一些研究,想出了这个
DELETE FROM `pets` p,
`pets_activities` pa
WHERE p.`order` > :order
AND p.`pet_id` = :pet_id
AND pa.`id` = p.`pet_id`然而,我得到了这个错误
未捕获SQL1064:您的Database_Exception语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在'p,
pets_activities页...
我从来没有做过交叉表删除,所以我没有经验,现在卡住了!
我做错了什么?
发布于 2012-07-12 05:56:34
在JOIN DELETE 语句中使用。
DELETE p, pa
FROM pets p
JOIN pets_activities pa ON pa.id = p.pet_id
WHERE p.order > :order
AND p.pet_id = :pet_id或者,您可以使用...
DELETE pa
FROM pets_activities pa
JOIN pets p ON pa.id = p.pet_id
WHERE p.order > :order
AND p.pet_id = :pet_id仅从pets_activities中删除...to
参见this。
对于单个表的删除,对于引用完整性,还有其他处理EXISTS、NOT EXISTS、IN、NOT IN等的方法。但是上面的方法是在FROM子句之前使用别名指定要从哪些表中删除,这可以更容易地让您摆脱一些相当紧张的地方。我倾向于在99%的情况下使用EXISTS,然后有1%的情况下使用这种MySQL语法。
发布于 2010-07-26 11:17:57
由于这似乎是pets和pets_activities之间的简单父/子关系,因此最好使用删除级联来创建外键约束。
这样,当删除pets行时,与其关联的pets_activities行也会自动删除。
那么你的查询就变成了一个简单的:
delete from `pets`
where `order` > :order
and `pet_id` = :pet_id发布于 2015-02-20 13:08:34
使用这个
DELETE FROM `articles`, `comments`
USING `articles`,`comments`
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4或
DELETE `articles`, `comments`
FROM `articles`, `comments`
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4https://stackoverflow.com/questions/3331992
复制相似问题