gpt4 book ai didi

MySQL:删除没有 child 的父记录

转载 作者:可可西里 更新时间:2023-11-01 07:48:15 25 4
gpt4 key购买 nike

如何编写查询,从父表中删除不存在子表的记录?

我有一个表 resume 和一个表 personal_skill,它有一个 resume_id 字段来引用简历表。我需要删除简历表中没有具有此类 resume_id 的 personal_skill 记录的所有记录。

我试着这样做:

    DELETE
FROM
resume
WHERE
version = 0
AND NOT EXISTS (SELECT NULL
FROM
personal_skill x
WHERE
x.resume_id = id)

但是这个查询失败了,因为我不能使用我在 SELECT 部分中删除的表。

最佳答案

您的尝试在这里显然有效:

 DELETE 
FROM resume
WHERE version = 0
AND NOT EXISTS (
SELECT id
FROM personal_skill x
WHERE x.resume_id = resume.id
);

如果没有,可能是普通的 id 出了问题(personal_skill 是否有 personal_skill.id 列?)。

另一种方法是:

 DELETE resume  
FROM resume
LEFT JOIN personal_skill
ON personal_skill.resume_id=resume.id
WHERE personal_skill.id IS NULL; -- or any non-NULLable column from personal_skill

关于MySQL:删除没有 child 的父记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15565136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com