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

基于计数和删除的条件SQL连接

如何解决基于计数和删除的条件SQL连接

我正尝试在表'wpi9_pc_products'中查找表'wpi9_term_relationships'中少于3个条目的所有行,以便可以从两个表中删除它们。

在从臀部射击之前,我想确保使用以下查询将正确的行拖出进行删除

SELECT * FROM `wpi9_pc_products` INNER JOIN wpi9_term_relationships ON 
wpi9_pc_products.id_product=wpi9_term_relationships.object_id GROUP BY 
wpi9_term_relationships.object_id HAVING COUNT(*) < 3

但是,我被困在这里,试图根据计数找出有条件地连接两个表的正确方法

我的sql非常生锈,因此任何帮助将不胜感激!

解决方法

如果我正确遵循的话,则您在产品和关系表之间具有父/子关系。我建议在子表上设置一个外键约束,该约束引用父表,如下所示:

alter table wpi9_term_relationships
    add constraint fk_product_id
    foreign key (object_id)
    references wpi9_pc_products(id_product)
    on delete cascade;

然后,您可以简单地从父表中删除记录; on delete cascade子句确保子记录将被自动删除:

delete p
from wpi9_pc_products p
where (select count(*) from wpi9_term_relationships r where r.object_id = p.id_product) < 3

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