0

比如我现在有个文章表和一个文章标签表(关联表)。

一篇文章对应着n个标签(n不定)(标签存储的是id)。

若用户修改了文章的标签,我现在的办法是先删除关联表的关联数据,然后再新增关联数据。

这种方法是否可行?还有其他方法可以解决这个问题吗?

tpwonline 105
2019-07-15 提问
4 个回答
1

已采纳

有三种
第一:replace into 但是问题多多
第二:你这种
第三:更新子表时分为delete删除原来有的、update更新原来有的、insert插入原来没有的这三种操作

0
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里的标签

一般来说都是这么干的

0

这是比较简单但是效果好的做法‘缺点是子表的自增键会容易加上去

复杂一点的话 先查出库里走的子表数据列表,和提交的列表比对。多出来的加到库里’少了的删除

0
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);

撰写答案

推广链接