article 表
id | title | tags |
---|---|---|
1 | article1 | js,php |
2 | article2 | php,java |
3 | article3 | foo |
4 | article4 | foo,bar |
以上是逗号分隔的,那么应该得到[js,php,java,foo,bar] 总共 5 个标签(这样的设计可能不太好,因为要遍历所有记录)。
article 表
id | title | tags |
---|---|---|
1 | article1 | js,php |
2 | article2 | php,java |
3 | article3 | foo |
4 | article4 | foo,bar |
以上是逗号分隔的,那么应该得到[js,php,java,foo,bar] 总共 5 个标签(这样的设计可能不太好,因为要遍历所有记录)。
表拆分就不说了,前面兄弟已经告诉你了这种结构多么的麻烦
这里给你个拆分这种逗号分隔字段的方法
举例说明:
a表c字段为1,2,3,4,5,6,7,8,就比如你的tags字段
随便找一个表t有自增字段id,自增值从1到1000,只要你的逗号分隔的字串逗号的个数少于这个1000就可以了,实际情况逗号很少你就减少这个1000就可以了,这里要注意的是要求1-1000不跳值,比如1,2,3,4,5,7少了个6是不行的,执行下面的sql就可以将c字段拆分成1-8的值
SELECT substring_index(substring_index(a.c,',',t.id),',',-1)
FROM a join t
ON t.id<=LENGTH(a.c)-LENGTH(REPLACE(a.c,',',''))+1;
4 回答1.1k 阅读✓ 已解决
8 回答1.2k 阅读
3 回答995 阅读✓ 已解决
2 回答1.7k 阅读
1 回答830 阅读✓ 已解决
2 回答1.1k 阅读
2 回答1k 阅读
文章和标签是一个多对多的关系,可以将该表拆分为三个表,article表,tag表,article和tag的关联表