如何根据另一个使用'subject_id'列作为参考的名为'replies'的表中的行数,删除具有主要ID“subject_id”的“subject”表中的行。< / p>
伪代码示例: 如果('主题'回复少于1){ 删除'subject'}
我对SQL触发器了解不多,所以我不知道我是否可以将它直接合并到数据库中,或者如果我必须编写一些PHP代码来处理这个......
答案 0 :(得分:2)
要删除任何没有回复的主题,此查询应该可以解决问题:
DELETE s.* FROM subjects AS s
WHERE NOT EXISTS
(
SELECT r.subject_id
FROM replies AS r
WHERE r.subject_id = s.subject_id
);
答案 1 :(得分:1)
其中一位MySQL专家需要权衡你是否可以直接这样做,但在PHP中你可以......
.newSession()
此示例假定“主题”是唯一的。换句话说,SELECTING WHERE subject ='test'将只返回一个subject_id。如果您将此作为定期清理,您将获取所有subject_id值(没有WHERE子句)并循环访问它们以在没有回复时将其删除。
答案 2 :(得分:1)
您可以通过从replies
表中选择所有(唯一)主题ID,在一个查询中实现此目的,并删除不在其中有回复的所有主题。使用SELECT DISTINCT
,您不会多次获取ID(如果主题有多个回复),那么您就不会获得不必要的数据。
DELETE FROM subjects
WHERE subject_id NOT IN (SELECT DISTINCT subject_id FROM replies)
任何没有回复的主题都应该删除!
答案 3 :(得分:0)
因此,您要删除所有没有回复的主题:
DELETE FROM subjects WHERE subject_id NOT IN
(SELECT subject_id FROM replies);
我认为这就是你想要的......