Mysql 再读一遍这个问题,这个答案是正确的。Tag3应该消失,它确实消失了。我的错误是没有仔细阅读+1 !!!+一个同样有效的解决方案和非常彻底的解释。非常有帮助,谢谢。因为case1和case2共享标签,所以不应该允许删除case1。这不是问题的意思。一个案例在
Mysql 再读一遍这个问题,这个答案是正确的。Tag3应该消失,它确实消失了。我的错误是没有仔细阅读+1 !!!+一个同样有效的解决方案和非常彻底的解释。非常有帮助,谢谢。因为case1和case2共享标签,所以不应该允许删除case1。这不是问题的意思。一个案例在,mysql,database-design,Mysql,Database Design,再读一遍这个问题,这个答案是正确的。Tag3应该消失,它确实消失了。我的错误是没有仔细阅读+1 !!!+一个同样有效的解决方案和非常彻底的解释。非常有帮助,谢谢。因为case1和case2共享标签,所以不应该允许删除case1。这不是问题的意思。一个案例在任何情况下都会被删除(没有双关语;),问题只是是否也要删除一些标签(以及哪些标签)。 cases id INT description TEXT tags id INT name TEXT case_tag
再读一遍这个问题,这个答案是正确的。Tag3应该消失,它确实消失了。我的错误是没有仔细阅读+1 !!!+一个同样有效的解决方案和非常彻底的解释。非常有帮助,谢谢。
因为case1和case2共享标签,所以不应该允许删除case1。
这不是问题的意思。一个案例在任何情况下都会被删除(没有双关语;),问题只是是否也要删除一些标签(以及哪些标签)。
cases
id INT
description TEXT
tags
id INT
name TEXT
case_tag
id INT
case_id INT
tag_id INT
SET @caseid_to_delete = 127;
SELECT COUNT(1) INTO @sharedtags_casecount
FROM (SELECT BB.case_id,B.tag_id
FROM case_tag AA INNER JOIN case_tag BB
ON AA.case_id=@caseid_to_delete
AND AA.tag_id=BB.tag_id
AND AA.case_id<>BB.case_id) A;
DELETE C.*,T.* FROM cases C,case_tag CT,tags T
WHERE C.id=@caseid_to_delete
AND CT.case_id=@caseid_to_delete
AND CT.tag_id=T.id
AND @sharedtags_casecount=0;
ALTER TABLE case_tag ADD INDEX case_tag_ndx (case_id,tag_id);
SET @caseid_to_delete = 127;
SELECT COUNT(1) INTO @sharedtags_casecount
FROM (SELECT BB.case_id,BB.tag_id
FROM case_tag AA INNER JOIN case_tag BB
ON AA.case_id=@caseid_to_delete
AND AA.tag_id=BB.tag_id
AND AA.case_id<>BB.case_id) A;
DELETE C.*,CT.* FROM cases C,case_tag CT,tags T
WHERE C.id=@caseid_to_delete
AND CT.case_id=@caseid_to_delete
AND CT.tag_id=T.id
AND @sharedtags_casecount=0;
delete t.*
from tags t
inner join case_tag ct
on t.id=ct.tag_id
inner join cases c
on ct.case_id=c.id
and t.id not in(select distinct tag_id from case_tag where case_id<>1)
and ct.case_id=1;
DELETE FROM tag WHERE tag_id NOT IN (SELECT tag_id FROM case_tag);