微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除少于三艘船的所有类请注意,“俾斯麦”级没有船,因此应删除该级

如何解决删除少于三艘船的所有类请注意,“俾斯麦”级没有船,因此应删除该级

[我试图删除所有少于 3 艘船的类,但我无法删除没有船的俾斯麦。我不知道如何删除它有人知道我做错了什么吗?下面的答案是我尝试输入的]

1

表格

Classes(class,type,country,numGuns,bore,displacement)
Ships(name,class,launched)
Battles(name,date)
Outcomes(ship,battle,result)

我的回答

DELETE FROM classes WHERE class IN 
  (SELECT class FROM ships 
   GROUP BY class HAVING Count(name) < 3) AND NOT EXIST (SELECT * FROM ships);

解决方法

您可以使用 not exists 删除所有 Ships 表中不存在且不少于 3 艘船的类。

delete from Classes
where not exists 
                (
                  select class from Ships group by class having count(*)>=3
                );
,

这应该有效:

DELETE FROM classes WHERE
    (NOT EXISTS (SELECT * from ships s WHERE s.`class` = classes.`class` )) OR
    ((SELECT COUNT(*) from ships s WHERE s.`class` = classes.`class`) < 3)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。