如何解决基于计数和删除的条件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 举报,一经查实,本站将立刻删除。