比如我现在有个文章表和一个文章标签表(关联表)。
一篇文章对应着n个标签(n不定)(标签存储的是id)。
若用户修改了文章的标签,我现在的办法是先删除关联表的关联数据,然后再新增关联数据。
这种方法是否可行?还有其他方法可以解决这个问题吗?
比如我现在有个文章表和一个文章标签表(关联表)。
一篇文章对应着n个标签(n不定)(标签存储的是id)。
若用户修改了文章的标签,我现在的办法是先删除关联表的关联数据,然后再新增关联数据。
这种方法是否可行?还有其他方法可以解决这个问题吗?
List<Integer> oldList = Lists.newArrayList(1, 2, 3, 4);
List<Integer> newList = Lists.newArrayList(1, 3, 5, 7);
List<Integer> oldListCopy = Lists.newArrayList();
oldListCopy.addAll(oldList);
//获取被删除的标签
oldList.removeAll(newList);
//获取新增的标签
newList.removeAll(oldListCopy);
//删除id在oldList里的标签
//添加newList里的标签
一般来说都是这么干的
INSERT INTO `news_relation`(`news_id`, `tag_id`) VALUES(100, 1), (100, 2) ON DUPLICATE KEY UPDATE `news_id`=VALUES(`news_id`);
DELETE FROM `news_relation` WHERE `news_id`=100 AND `tag_id` NOT IN(1, 2);
3 回答2.4k 阅读✓ 已解决
3 回答3.9k 阅读✓ 已解决
8 回答3.4k 阅读
4 回答2.6k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
2 回答3k 阅读✓ 已解决
有三种
第一:replace into 但是问题多多
第二:你这种
第三:更新子表时分为delete删除原来有的、update更新原来有的、insert插入原来没有的这三种操作